[MUSIC CHƠI] JASON Hirschhorn: OK, tất cả mọi người. Chào mừng bạn đến Mục. Đây là CS50, chúng tôi rất phần siêu đầu tiên. Như bạn đã biết, trong tuần tới sections sẽ bắt đầu, nhưng tuần này chúng tôi tất cả cùng nhau. Có tôi. Tên tôi là Jason. Tôi là một giảng viên trong Khoa học Máy tính. Chúng tôi có Andi, ai là người đứng đầu của TA CS50. Và Scaz, Giáo sư Brian Scassellati, ông là một giáo sư khoa học máy tính. Chúng tôi là những người đứng đầu CS50 tại Yale. Bạn luôn có thể gửi email chúng tôi heads@cs50.yale.edu. Chúng tôi sẽ có mặt tại các bài giảng. Chúng ta sẽ tới giờ hành chính. Nếu có bao giờ bất cứ điều gì chúng ta có thể làm cho bạn, bất cứ điều gì bạn cần, cảm thấy miễn phí để tiếp cận chúng tôi. Vì vậy, những gì chúng ta sẽ làm gì hôm nay? Hoặc trước đó, những gì sắp lên trong tuần này? Vì vậy, giờ làm việc từ Thứ Hai, Thứ Ba, Thứ Tư và Thứ Năm, 8:00 đến 11:00. Có một lịch trình trên website. Phần, như tôi đã đề cập, được bắt đầu vào tuần tới. Và bạn sẽ tìm ra những gì trong tuần này thời gian các phần của bạn là, ngày nào nó là, và những người hỗ trợ kỹ thuật của bạn. Vấn đề Set 1 là do vào Thứ năm tại trưa, thứ sáu vào buổi trưa với một ngày cuối năm. Có, bạn có chín ngày cuối năm. Và có chín bộ vấn đề. Và chỉ có thể sử dụng một trong ngày cuối mỗi vấn đề thiết lập. Có, có hiệu lực, tất cả các vấn đề bộ là do thứ sáu vào buổi trưa. Đó là tất cả. Tất cả những chi tiết có trên các giáo trình. Mỗi thứ Sáu, chúng tôi có bữa ăn trưa. Chúng tôi muốn làm cho này lớn Tất nhiên cảm thấy một chút nhỏ hơn. Vì vậy, bạn đang chào đón để đặt chỗ. Ăn trưa miễn phí với đồng nghiệp bạn cùng lớp và đội ngũ nhân viên. cs50.yale.edu/rsvp. Tất cả những điều đó Tôi có trên màn hình, và nhiều hơn nữa, bạn có thể tìm thấy cs50.yale.edu hay cs50.harvard.edu, nếu bạn đi đến Harvard và được xem trực tuyến này. Cũng trên những trang web, có là một tấn các nguồn lực cho bạn. Mỗi bài giảng không chỉ có video của bài giảng, nhưng cũng lưu ý. Ai đó sẽ xem giảng và ghi chép cho bạn. Vì vậy, bạn chỉ có thể trả sự chú ý trong các bài giảng, hoặc bạn có thể sử dụng các ghi chú của họ / chúng tôi ghi chú để bổ sung các ghi chú của chính bạn. Có slide trực tuyến. Các nguồn code-- tất cả mọi thứ David đi qua trong bài giảng, hoặc Scaz đi qua bài giảng, mà Mã nguồn có sẵn trực tuyến là tốt, vì như tôi, đã đề cập video. Phần, tương tự như vậy, tất cả sẽ được dựng thành phim. Tất cả những slide sẽ có sẵn. Tất cả các mã đó sẽ có sẵn cho bạn. Có quần short trên trang web mà Nhân viên CS50 dành năm đến 10 phút đi qua các chủ đề cho bạn. Một số những người bạn đã đã gặp phải trong bộ vấn đề. Văn phòng giờ, như tôi đã đề cập, từ thứ Hai qua ngày thứ Năm, 8:00 đến 11:00. CS50 học là một nguồn tuyệt vời. Có những vấn đề thực tế, slide mẫu, được biết lỗi mà sinh viên muốn chạy vào, cho cơ bản tất cả chúng ta chủ đề sẽ giới thiệu trong khóa học này. Và cuối cùng, trên slide này ít nhất, Reference50 đó cung cấp cho bạn thông tin trên tất cả các chức năng C bạn có thể bao giờ có thể hy vọng sử dụng và nhiều, nhiều hơn nữa. Một lần nữa, mà chấm chấm chấm ở dưới cùng của màn hình là để chỉ ra rằng thậm chí có nhiều nguồn lực hơn vào những hai trang web: cs50.yale.edu, cs50.harvard.edu. Vì vậy, những gì chúng ta làm hôm nay? Vâng, đầu tiên tôi sẽ cung cấp cho bạn nhìn vào các nguồn tài nguyên. Đã làm một. Nhìn chúng tôi. Bây giờ, chúng ta sẽ đi qua kiểu dữ liệu và khai thác trong C. Sau đó, Andi sẽ đi lên đây và đi qua các thư viện trong C, printf (), một chức năng mà bạn đã quen thuộc hay sẽ nhanh chóng trở nên rất quen thuộc. Và bạn cũng sẽ đi qua điều kiện và vòng lặp. Và cuối cùng, Scaz sẽ đi qua các ID CS50. Nếu bạn chưa chim bồ câu trong đã có trong Problem Set 1, cũng như làm thế nào để sử dụng lệnh terminal và hữu ích và sau đó cung cấp cho bạn một số bản demo và thực hành mã hóa trong các ID CS50. Trước khi tôi nhảy vào này nội dung ở phía bên này, không ai có bất kỳ câu hỏi cho đến nay? Tuyệt vời. ĐƯỢC. Thay đổi bánh răng. [THAY ĐỔI GEARS] Đó là tôi chuyển bánh răng trong một chiếc xe nhãn hiệu. Vì vậy, các kiểu dữ liệu trong C, bạn có thể không chỉ có một biến x và có nó được đặt trên dòng 10, một số nguyên, có thể số 1, on line 20, một số thập phân 10.5, và sau đó một vài dòng sau một chuỗi, tôi yêu CS50. Trong C, các biến chỉ có thể là một điều, và chỉ có một điều. Và do đó, bạn phải cung cấp cho họ các loại. Và trên tàu này, chúng tôi có một danh sách các loại. Có chars, mà đứng cho nhân vật. Vì vậy, đó là một chữ cái A, B, C, D. Đó cũng có thể là một không gian, hoặc cũng có thể là một ký tự dòng mới. Có số nguyên, mà chỉ là số, toàn bộ numbers-- hoặc các số nguyên rather-- nhưng không có số thập phân. Đối với số thập phân, chúng ta có nổi số điểm. Nổi số điểm là số thập phân. Sau đó, có chờ đợi, đó là số nguyên cơ bản lâu hơn. Bạn sẽ nhận thấy rằng một dài là 8 trong khi một int là 4. Tôi sẽ nhận được rằng trong một giây. Đó là bởi vì chờ đợi thậm chí có thể lưu trữ số nguyên hơn một int có thể lưu trữ. Tăng gấp đôi là một phao dài. Và cuối cùng, chúng ta có chuỗi, mà là một loại rằng bạn có thể sử dụng trước. Nếu bạn bao gồm hashtag # includeCS50.h trong tập tin nguồn của bạn, sau đó bạn có thể sử dụng một loại dây. Nó không thực sự được xây dựng vào C. Có một vài loại khác. Nhưng đó là những cái chính với mà bạn sẽ sử dụng và gặp phải. C như, một lần nữa tôi đã đề cập, mỗi variable-- nó chỉ có thể là một loại và chỉ có một loại. Đó là bởi vì C là một tĩnh ngôn ngữ đánh, như trái ngược các ngôn ngữ kiểu động mà nếu bạn tạo một biến bạn có thể thay đổi gì được lưu trữ trong nó như bạn đi vào trong chương trình của bạn. Trên đây trên tay phải bên, tôi có các kích cỡ khác nhau của các loại dữ liệu theo byte. Vì vậy, một nhân vật là 1 byte. Đó là 8 bit. Và điều đó có nghĩa là vì 8 bit có tám 0 và số 1. Chúng tôi đã nhìn thấy những bản demo trong lần đầu tiên tuần với bóng đèn nhị phân. Với 8 bit hoặc 1 byte, chúng ta có thể đại diện cho số 0-255. Phải. Nếu tất cả 8 bit là 0 đó là 0. Nếu bit đầu tiên là 1, đó là số một, và như vậy, tất cả các con đường lên đến 255. Và đó là lý do tại sao cho các ký tự bạn có thể có cơ bản lên đến 255 người trong số họ, nhưng rằng rất nhiều để trang trải tất cả các nhân vật chúng ta cần phải sử dụng. Đối với số nguyên, bạn có thể có 0 và sau đó bạn có 2 đến 32 trừ đi 1. Đó là những cách nhiều lựa chọn bạn có cho số nguyên. Đối với một thời gian dài, bạn có 0 2 đến 64 trừ đi 1. Vì vậy, bạn có rất nhiều, rất nhiều, nhiều lựa chọn hơn cho chờ đợi. Strings, đó là một dấu hỏi bởi vì đó là một cliffhanger cho sau này. Yeah. Tôi có thể nói với mọi người là trên cạnh chỗ ngồi của mình, như dấu hỏi là những gì? Đó là một cliffhanger. Chúng tôi cuối cùng sẽ bao gồm các kích thước của dây và nói chuyện nhiều hơn về chuỗi. Bởi vì chuỗi là thực sự một trong những bánh xe đào tạo chúng ta đưa vào trong này Tất nhiên lúc đầu và sau đó đi ra sau đó trên, bởi vì chuỗi trong C Thực tế, con trỏ đến mảng ký tự. Nhưng một lần nữa, đó là một Cliffhanger cho sau này. Trước khi tôi di chuyển trên bất kỳ câu hỏi, ý kiến, mối quan tâm về slide này? ĐƯỢC. Tôi phải là một explainer tuyệt vời. Ngoài ra khi bạn đang lập trình, bạn đang sử dụng các toán tử này. Dấu hiệu thực sự đơn giản mà có thể làm đơn giản hoạt động, mà có lẽ bạn đang đã rất quen thuộc. Ví dụ, ở bên phải bên tay, chúng ta thấy thêm. Để thêm, bạn chỉ cần làm một dấu hiệu Plus. Và như vậy bạn có thể có hai biến x và y. Bạn có thể làm việc x + y trong mã của bạn. Có lẽ bạn muốn nói rằng bạn đối với: có số 7 và 3, bạn muốn để lưu trữ mà trong một biến gọi là tổng. Bạn có thể làm cho kiểu int, không gian Tóm lại, tên của biến, = 7 + 3; Sẽ những gì mà cửa hàng trong tổng? Bất cứ ai? Nếu tôi đã có trong sum = 7 + 3. Điều gì sẽ được lưu trữ trong tổng? Bạn chỉ có thể hét nó ra. Đung 10. JASON Hirschhorn: 10! Đó chính quyền. Những gì về trong sum = 7-3, Tôi chỉ sử dụng dấu gạch ngang. Chuyện gì sẽ được lưu trữ? Đung 4. JASON Hirschhorn: 4. Sum có lẽ là sai tên cho biến đó, nhưng 4 sẽ được lưu trữ. Để nhân trong C, sử dụng ít Nhân vật Star, bạn không sử dụng một x. Để phân chia, sử dụng một Forward Slash không phải là dấu chia. Và để theo modulo, sử dụng các biểu tượng phần trăm. Vì vậy, hãy nói rằng tôi muốn xem int z = 7% 3, những gì sẽ được lưu trữ trong z? Vì vậy, đó là bản chất hỏi gì modulo làm gì? Không ai biết những gì modulo không? Yeah. y 4. SPEAKER 1: Đây là phần còn lại. JASON Hirschhorn: Đây là còn lại khi bạn chia. Vì vậy, 7 chia cho 3 là 2 còn lại 1. Vì vậy, 1 sẽ được lưu trữ. Bạn đã làm phép trừ, nhưng đó là cách nó hoạt động. Đó là những gì các nhà điều hành modulo nào. Phải mất một số chia nó bằng một số và trả về cho bạn Phần còn lại. Vì vậy, một lần nữa, 7% 3 mang đến cho bạn 1, bởi vì 7 chia cho 3 là 2 còn lại 1, và trả phần còn lại. Những gì về chúng ta hãy quay trở lại một bước để có dấu hiệu phân chia. Nếu tôi đã làm 7 / chia cho 3 không ai biết điều gì đó sẽ trở lại? SPEAKER 2: 2. JASON Hirschhorn: Tại sao 2 và không 2,333? SPEAKER 2: Tôi nghĩ rằng nó cắt off sau khi toàn bộ số. JASON Hirschhorn: Vì vậy, đó là chính xác. Trong C, nếu bạn làm bộ phận của hai số nguyên 7 chia cho 3, nó được câu trả lời mà trong trường hợp này 2,3333 mãi mãi và nó tìm thấy rằng dấu thập phân và chops tất cả mọi thứ ra sau khi các số thập phân và nó chỉ trả về cho bạn 2. Vì vậy, nếu tôi đã làm 8 chia cho 3. Điều đó thực sự, chúng ta biết rằng để trở 2,666, nhưng có thể băm tất cả mọi thứ ra tại các chữ số thập phân, cắt cụt nó tất cả, và chỉ trả về cho bạn 2. Vì vậy, 6 chia cho 3, 7 chia 3, 8 chia cho 3, là tất cả sẽ trở lại với bạn 2. Không ai biết, hoặc có dự đoán, như thế nào tôi có thể thực sự có được câu trả lời đầy đủ, nếu tôi muốn thập phân đó? Yeah. Đi trước. SPEAKER 3: Sử dụng một phao? JASON Hirschhorn: bạn có ý nghĩa gì? SPEAKER 3: Bởi vì bạn cho biết float là cho số [Không nghe thấy] JASON Hirschhorn: Đúng vậy. Vì vậy, đó là chính xác. 7 là một số nguyên. Nhưng nếu tôi muốn biến đó vào một số điểm nổi, Tôi sẽ phải lưu trữ mà là 7.0 vì máy tính thực sự là stupid-- chúng tôi thấy rằng với PB và J example-- nó sẽ chỉ làm chính xác những gì bạn nói với nó. Vì vậy, nếu bạn viết 7, nó nghĩ đó là một số nguyên. Nếu bạn viết 7.0, mặc dù chúng tôi biết những điều đó là tương đương, nó vẫn coi họ như một nổi số điểm. Vì vậy, nếu bạn đã chia 7.0 3, hoặc chia cho 3,0, nó sẽ nói, OK, bây giờ chúng ta đang đối phó với phao. Tôi sẽ trở lại với bạn 2.333333 mãi mãi. Tuy chưa thực sự mãi mãi, bởi vì như chúng ta đã thấy trong bài giảng, các số dấu chấm động không chính xác chính xác. Vì vậy, nếu bạn muốn làm chữ số thập phân mà, hoặc một phần của số thập phân đó, sau đó bạn phải use-- một trong số họ có phải là một số điểm nổi và các máy tính đã hiểu rằng đây là một điểm nổi bạn xử lý, không phải là một số nguyên. Bất kỳ câu hỏi trên bảng đó trên phía bên tay phải, cho đến nay? Hoặc phía bên tay trái của bạn, của bạn trái, phía bên tay trái của bạn. Yeah. SPEAKER 4: Đúng vậy. Đối với chỉ thích một thường xuyên số nguyên, bạn sẽ write-- bạn sẽ phải viết nổi? JASON Hirschhorn: Yeah vậy. Vâng, nếu bạn muốn tạo một biến đó là một phao, bạn cần phải nói float z bằng gì gì đó. SPEAKER 4: OK. JASON Hirschhorn: Nhưng nếu tôi muốn làm 7 chia cho 3 và nhận được số thập phân mà, Tôi sẽ làm gì float z = 7,0 / 3,0; và đó sẽ cho tôi những dấu chấm động số. SPEAKER 4: OK. JASON Hirschhorn: Nếu tôi đã làm một cái gì đó giống như int z = 7/3, mà sẽ cung cấp cho tôi một số nguyên, bởi vì đó là tất cả các số nguyên. Điều đó có ý nghĩa? SPEAKER 4: Có. JASON Hirschhorn: OK. Tuyệt vời. Bất kỳ câu hỏi khác về bảng đó? Có thật không? Tôi rất vui mừng. ĐƯỢC. Vì vậy, một số những điều khác mà bạn sẽ sử dụng, đôi khi trong điều kiện hoặc vòng, là những loại operators-- các loại biểu thức Boolean. Và như chúng ta đã học, == là những gì bạn sử dụng để kiểm tra xem hai thứ đều bình đẳng. Vì vậy, ở đây tôi đang kiểm tra nếu x == y, chúng ta hãy một lần nữa cho rằng x 7 và y là 3. Vì vậy, nếu tôi đã viết 7 == 3, những gì đó sẽ trở về với tôi? Là đúng hay sai? Đung False. JASON Hirschhorn: OK. Tôi cảm thấy như tất cả mọi người có thể có được này. Vì vậy, tất cả mọi người, những gì sẽ trả lại? Đung False. JASON Hirschhorn: False. Tuyệt vời. 7 không bằng 3. Vì vậy, 7 == 3 sẽ trả về false. Bạn không có một dấu hiệu không bình đẳng, vì vậy nếu tôi checked 7! = 3, điều gì sẽ trả lại? Đung True. JASON Hirschhorn: True. Tuyệt vời. Ai đó đã rất nhấn mạnh trong lưng và đánh giá cao điều đó. Sau đó, bạn chỉ còn lại ít hơn so với nhà điều hành, ít hơn hoặc bằng hành, lớn hơn toán tử lớn hơn, hơn hoặc bằng hành. Vì vậy, một kiểm tra sự tỉnh táo hơn. Nếu tôi có 7 lớn hơn hoặc bằng 3. Điều đó có trở lại? Đung True. JASON Hirschhorn: True. Vâng. Đó là căn phòng phía sau, mặt sau phòng, tuyệt vời. Bạn có thể kết hợp các biểu thức, nếu bạn thích, cũng như, với một hợp lý và đó là && Hoặc một logic OR là || ||. Và vì vậy bây giờ bạn có thể kiểm tra hai điều together-- Đó có phải là buồn cười? Tại sao là buồn cười? Vì vậy, nếu tôi muốn, tôi có thể nói là 7 lớn hơn 3 và 2 là ít hơn 4? Vâng, nếu 7 lớn hơn 3, đó là sự thật. 2 là ít hơn 4, đó là sự thật. Vì vậy, toàn bộ điều này sẽ trở thành sự thật. Nếu tôi thử nghiệm 7 là lớn hơn 3 và- Tôi chỉ cần chọn số ngẫu nhiên here-- 4 là ít hơn 2, tốt, đó là sai. Vì vậy, đúng và sai làm sai. Và bạn có thể đi và bạn kết hợp như nhiều điều kiện với nhau như bạn muốn. Không ai có bất kỳ câu hỏi, ý kiến, mối quan tâm cho đến nay? Và tôi thấy một số bạn chụp ảnh của tôi trong màn hình, mà tôi đánh giá cao. Hy vọng rằng, nó không snapchat. Hy vọng rằng, nó cho các ghi chú của bạn. Nhưng tất cả đều được đi sẽ có sẵn trực tuyến. Vì vậy, bạn không cần phải chụp ảnh này. Giống như tôi đã đề cập, tất cả mọi thứ sẽ có sẵn trực tuyến cho bạn. ĐƯỢC. Tôi về để có được ngoài sân khấu, vì vậy không ai muốn nói bất cứ điều gì trước khi điều đó xảy ra? Câu hỏi? [Interposing GIỌNG NÓI] JASON Hirschhorn: Oh, dừng lại. Các bạn thật là quá đẹp. ĐƯỢC. Tôi sẽ gắn thẻ ra. Đi nào. Andi PENG: Chúng tôi đang đi làm một sự thay đổi mic vụng bây giờ. JASON Hirschhorn: Tôi sẽ thực hiện việc này đi. Andi PENG: Đánh giá cao sự hỗ trợ, guys. Bạn có thể nghe tôi không? Đó có phải là tốt? Perfect. Beautiful. Hãy để tôi chỉ gài rằng trong. ĐƯỢC. Vì vậy, tôi về để làm giống như một người khổng lồ thông tin đổ về các bạn ngay bây giờ. Và không phải lo lắng gì nếu bạn không sau mỗi dòng chút về những gì Tôi là giới thiệu cho bạn. Như Jason cho biết, tất cả mọi thứ là hoàn toàn trực tuyến. Chỉ cần chúng ta sẽ cố gắng để giới thiệu tất cả mọi người với những khái niệm bao phủ trong một số các slide. Vì vậy, chỉ cần làm theo cùng. Không phải lo lắng nếu bạn không hiểu tất cả mọi thứ; Tuy nhiên, nếu vào thời điểm bất kỳ bạn cảm thấy mất mát, nâng cao của bạn tay, chúng tôi sẽ dừng lại, không phải lo lắng. Cool. Vì vậy, tôi nghĩ rằng cái gì mà David có đã loại được đề cập trong bài giảng và Jason đã loại ám đến ngày hôm nay là những gì một thư viện là. Vì vậy, trong chương trình, chúng tôi có những điều này gọi là thư viện. Ở đâu, về cơ bản, tất cả họ chỉ là một tập chức năng, đó là về cơ bản chỉ là mã đó đã được viết bởi người khác mà chúng ta có thể tất cả sử dụng trong các chương trình của chúng tôi. Vì vậy, làm thế nào một bình thường công tác thư viện, phải không? Bạn nhập vào các cửa thư viện. Bạn có tất cả các sách bạn có thể kéo ra và bạn có thể truy cập thông tin trong những cuốn sách. Cùng một điều trong lập trình. Bạn có một thư viện mà có đã được viết bởi những người khác. Và cách mà bạn có thể, như lập trình viên hoặc một học sinh, có thể được truy cập vào thư viện là thông qua hashtag # include. Ví dụ, trong C chúng tôi có ba C-- nhất thường được sử dụng ba tiêu chuẩn C libraries-- một thư viện vào / đầu ra, thư viện string, và các thư viện toán học. Vì vậy, trong vòng đầu tiên của bạn vài vấn đề đặt ra, những người sẽ là ba mà bạn đang sử dụng chủ yếu. Vì vậy, như David đã giải thích trong bài giảng, tôi chuẩn / O thư viện, hoặc đầu vào / đầu ra tiêu chuẩn thư viện hiện chính xác đó. Nó cho phép bạn, trong mã của bạn, để đầu vào bất cứ điều gì từ người dùng và đầu ra vào màn hình, về cơ bản in nó ra màn hình. Và do đó, bất cứ lúc nào bạn sử dụng bất kỳ chức năng, ví dụ printf function () mà chúng ta sẽ đi qua các slide tiếp theo, bảo đảm bao gồm các tiêu chuẩn I / O thư viện hoặc nếu không bạn sẽ không có thể sử dụng printf () chức năng. Bởi vì bạn, là người lập trình không bao giờ thực sự đã viết chức năng đó, bạn chỉ sử dụng ai đó mã khác trong mã của riêng bạn. Điều đó làm cho tinh thần mọi người? Cool. Và sau đó chúng tôi nhận được vào thực chất thư viện string.h và math.h thư viện, h chỉ có nghĩa thư viện, thư viện khác mà bạn sẽ thấy cuối cùng được sử dụng trong mã của bạn. Tuy nhiên, với mục đích của thư viện này, chúng tôi cũng have-- của class-- này chúng tôi cũng có những gì được gọi là thư viện CS50, cs50.h, nơi chúng tôi, cho nhìn chăm chú của bạn đã tạo ra nhiều chức năng quan trọng và hữu ích. Vì vậy mà bạn là một lập trình viên có thể cõng off những gì chúng ta đã viết ra để của có sẵn chức năng này cho bạn để bạn sử dụng. Tôi sẽ được bao gồm một vài các chức năng thường sử dụng, nhưng biết rằng đây là những tất cả các tuyến googleable. Hãy thoải mái, kéo lên các thư viện và CS50 sau đó bạn có tất cả các chức năng đó. Yeah. SPEAKER 5: Vì vậy, nếu bạn không sử dụng các phần mềm được cung cấp thông tin lớp, làm thế có nghĩa là chúng ta sẽ phải tải về và tìm tiêu đề này nộp mình và nói máy tính nó ở đâu? Andi PENG: Great câu hỏi. Chính xác. Vì vậy, nó giống như nếu bạn không chất hiện diện tại một thư viện, không có cách nào để bạn có thể thực sự đi và truy cập nó. Vì vậy, điều tương tự với lập trình trong C, bạn phải chắc chắn rằng bạn đang sử dụng của chúng tôi thiết bị vì thư viện là đã được tích hợp vào nó. Và sau đó khi bạn hashtag #include, của thư viện đó. Yeah. Câu hỏi hay. Tất cả mọi người tốt? Cool. Được rồi. Vì vậy, chúng tôi đang đi để đạt, về cơ bản, là những gì chức năng đầu tiên mà Chúng tôi là những lập trình viên sẽ được sử dụng trong mã của chúng tôi. Đây được gọi là printf () chức năng. Vì vậy, printf () chức năng, như tôi đã đã nói trong slide cuối cùng, được bao gồm trong tiêu chuẩn I / O, tiêu chuẩn đầu vào / đầu ra, thư viện. Vì vậy, chắc chắn rằng bất cứ điều gì bạn đang using-- oh, hãy để tôi lấy laser pointer-- bất cứ khi nào bạn đang sử dụng printf () chức năng, bạn phải bao gồm các tiêu chuẩn I / O thư viện hoặc người nào khác, khi bạn biên dịch, bạn sẽ nhận được một lỗi bởi vì máy tính sẽ như thế nào, oh tôi không biết nơi printf () là, bạn không nói cho tôi biết nơi printf () là. Vâng printf () được bao gồm trong tiêu chuẩn I / O, vì vậy khi bạn sử dụng printf (), hãy chắc chắn để có mà dòng trên mã của bạn. Vì vậy, ví dụ, printf () đây là một chức năng. Tất cả nó là một cái gì đó in ra bên trong các dấu ngoặc đơn cho người sử dụng. Ai muốn lấy một đâm vào những gì dòng mã này ngay ở đây là sẽ in ra? Do đó, câu trả lời là trên màn hình. Bất cứ ai? Verdi: Đáy. Andi PENG: Verdi, tại sao bạn không đi trước và nói rằng toàn bộ tuyên bố? Verdi: Xin chào, tôi tên là Andi, và tôi 20 tuổi. Andi PENG: Ah, đáng yêu. Vì vậy, trong dòng này, chúng ta sẽ in ra, Xin chào, tôi tên là Andi, và tôi 20 tuổi, trong đó là trong thực tế, một tuyên bố đúng. Cú pháp. Vì vậy, vài vấn đề cú pháp mà Các bạn muốn chắc chắn rằng bạn biết. Dấu ngoặc kép. Dấu ngoặc kép cho các máy tính mà tất cả mọi thứ bên trong sẽ được in. Tất cả mọi thứ bên trong lon chỉ được chính xác như thế nào bạn gõ nó, ngoại trừ thường ở cuối, chúng ta sẽ muốn bao gồm một hash-- oh sorry-- một dấu gạch ngang n. Vì vậy, một dấu gạch ngang n. Có ai muốn có nhiều phán đoán vào những gì mà làm cho mã của chúng tôi? Yeah. SPEAKER 6: Đặt nó trên một dòng mới. Andi PENG: Chính xác. Vì vậy, tất cả điều này là cho phép bất cứ điều gì xảy ra sau này, sau khi tuyên bố này, được in ra một dòng mới. Vì vậy, khi bạn đang viết của bạn mã bạn không ngẫu nhiên có những điều tacked trên để kết thúc mà bạn không muốn. Đó là tất cả mọi thứ được gọn gàng in một dòng và sau đó chúng tôi bắt đầu dòng sau. Có ai nhớ những gì mà dấu chấm phẩy hiểu khi chúng ta đang mã hóa? Yeah. SPEAKER 7: Báo cáo. Andi PENG: Xin lỗi? SPEAKER 7: Liệu nó kết thúc tuyên bố? Andi PENG: Yeah. Vì vậy, trong C, hoặc bất kỳ chương trình ngôn ngữ, dấu chấm phẩy biểu thị sự kết thúc của một dòng lập trình. Vì vậy, ví dụ, trong tiếng Anh chúng ta sử dụng khoảng thời gian để nói, oh đây là kết thúc một câu. Trong lập trình, cùng một điều, chúng ta có một dấu chấm phẩy để biểu thị sự kết thúc của một dòng. Thông thường, khi bạn bắt đầu chương trình, bạn sẽ nhận ra bạn quên thêm một dấu chấm phẩy và sau đó bạn cố gắng chạy của bạn mã và nó không hoạt động. Và bạn đang như, Ah, tôi không biết tại sao, nó nên được làm việc. Rất có thể là bạn có thể quên một dấu chấm phẩy hoặc một khung hoặc một cái gì đó một nơi nào đó. Vì vậy, đó là quan trọng để nhớ. Cool. Tất cả các quyền, giơ tay, làm thế nào nhiều người dân ở đây có bao giờ AP đưa khoa học máy tính hay lập trình trong Java trước, bao giờ? ĐƯỢC. Đáng yêu. Điều đó sẽ không được áp dụng sau đó, nhưng trong Java, bạn có một cái gì đó gọi là System.out.println mà không tồn tại trong C. Vì vậy, trong C, bất cứ khi nào bạn muốn thêm vào trong các biến vào bất cứ điều gì bạn muốn để in ra, có một cú pháp cụ thể, chúng ta sẽ sử dụng. Đó gọi là placeholding-- cơ bản chúng ta thêm placeholders tại chỗ của các số nguyên hoặc biến rằng chúng ta muốn in. Vì vậy, các bạn có thể thấy chúng tôi đã bao gồm một tiêu đề thư viện mới nộp ở đây. Các thư viện CS50. Và chứa trong đó thư viện CS50 là một chức năng thông thường chúng ta sẽ sử dụng trong khóa học của chúng tôi gọi getInt (). Có ai muốn để mất một đâm vào những gì getInt () có thể có thể làm được. Đung [Không nghe thấy] Andi PENG: Xin lỗi. Không thể nghe thấy bạn. Maddie, bất cứ ai. Maddie: Oh, nó nhắc nhở bạn cho một số nguyên. Andi PENG: Chính xác. Vì vậy, chức năng này, khác chức năng đó là đã có được viết bởi một người khác rằng chúng ta có thể kêu gọi các doanh nghiệp. Tất cả đó là là nhắc nhở các bạn, những người sử dụng, để đầu vào bất cứ điều gì bạn muốn như mã đang chạy và nó lưu whatever-- trong trường hợp này chúng tôi getInt () - ing, do đó có nghĩa chúng tôi có được một số nguyên. Và chúng ta sẽ lưu rằng trong số nguyên khác mà chúng ta vừa thực hiện được gọi là tuổi tác. Điều đó làm cho tinh thần để tất cả mọi người? Cool. Vì vậy, bây giờ mà chúng tôi đã được lưu trữ số nguyên này, mà chúng tôi đã nhắc từ người sử dụng, vào biến này, chúng tôi đã tạo kiểu int age, chúng ta có thể đi trước và nơi rằng trong printf của chúng tôi () chức năng. Vì vậy, cú pháp thường cho printf () là rằng bất cứ nơi nào trong vật lý thực tế của bạn dòng bạn muốn bao gồm số nguyên, bạn làm biểu tượng đó phải có, các biểu tượng phần trăm, với kiểu của biến mà bạn muốn. Vì vậy, trong trường hợp này tuổi là một số nguyên. Vì vậy, bạn sẽ bao gồm % i vì nó là một số nguyên. Và sau khi bạn tuyên bố, bạn sẽ để làm dấu phẩy và tên của biến. Vì vậy, ở đây, chúng ta sẽ in ra, Xin chào, tôi tên là Andi, và tôi năm trống cũ. Hashta-- hay, sorry--, tuổi với bất cứ điều gì tôi đầu vào. Vì vậy, nếu tôi được đầu vào 20 cho getInt () của tôi ở đây, nó sẽ in ra chính xác những điều tương tự. Nhưng, nếu tôi muốn một cái gì đó đầu vào khác, như có lẽ 40 hoặc 45, sau đó bạn sẽ thấy rằng phản ánh phù hợp trong các mã. Vì vậy, đây là một ví dụ của một cái gì đó mà nó in ra và trông bạn như thể nó là điều tương tự, nhưng bên dưới mui xe của máy tính có thực sự những điều rất khác nhau xảy ra. Cool. Được rồi. Vì vậy, những gì nếu chúng ta muốn nhiều biến? Khá dễ dàng. Cùng một điều. Chúng tôi cũng có một chức năng mới đây gọi là GetString (), cũng bao gồm trong thư viện CS50, rằng tất cả nó là nhắc nhở người dùng cho một chuỗi, đó là chỉ là một tập hợp các ký tự, vậy giống như một câu hay như một tên. Vì vậy, trong trường hợp này, chúng ta sẽ có hai placeholders% s cho chuỗi và% i cho số nguyên. Và chúng ta sẽ làm theo mà do hai biến chúng tôi muốn đưa, theo thứ tự mà chúng xuất hiện trong câu. Vì vậy, ví dụ, tên của tôi là trống, tôi muốn có một tên ở đó, vì vậy tôi sẽ có tên đầu tiên. Và rồi sau đó, tôi muốn tuổi, muốn có độ tuổi thứ hai. Và vì vậy nếu tôi muốn đầu vào, Hello, Tên tôi Andi, và tôi 20 tuổi. Nếu tôi đã nhập vào Andi và 20, chính xác cùng một điều sẽ in; Tuy nhiên, bây giờ chúng tôi đã có hai lưu trữ biến của tên cũng như int. Yeah. SPEAKER 8: Nó sẽ được có thể chạy nếu bạn chuyển tên và tuổi kết thúc đó? Andi PENG: Yeah. Đó là câu hỏi thực sự tốt. Vì vậy, câu chuyện dài ngắn, không có. Bởi vì tên và age-- gì loại biến là tên? SPEAKER 8: String. Andi PENG: Và những gì loại biến là tuổi? SPEAKER 8: Integer. Andi PENG: Vì vậy, ở đây chúng ta có một placeholder cho chuỗi và số nguyên, phải không? Vì vậy, nếu bạn đã chuyển đổi này, máy tính sẽ không biết. Nó sẽ kiểm tra một chuỗi, và nếu bạn cố gắng để cung cấp cho nó một int, nó sẽ như thế nào chờ tôi bối rối, bạn nói với tôi rằng tôi nên có Giao đất bộ nhớ cho một int. Và ngay tại đây, khi dự kiến ​​một số nguyên và bạn cho nó một tên và một chuỗi thay vào đó, nó cũng sẽ rất khó hiểu, nó sẽ không chạy chính xác cách bạn cần nó. Vì vậy, ở đây, đặt tên và cú pháp rất quan trọng để chạy mã. Tất cả mọi người tốt? Yeah. Maddie. Maddie: Ở đây, tôi biết chúng tôi đã nhìn các ví dụ trong lớp học, nơi mà họ yêu cầu tuổi của bạn là gì, tên của bạn là gì. Ở đây, đó sẽ là nó doesn't-- nếu chúng ta để chạy mã này, nó sẽ không hỏi cho rằng? Nhưng bạn sẽ chỉ là hai số đầu vào và sau đó nó sẽ chạy như thế? Andi PENG: Yeah, chính xác. Vì vậy, nếu bạn muốn cho nó để màn hình hiển thị, vui lòng nhập tuổi của bạn, bạn có thể chỉ cần thêm một printf () chức năng nói là, xin vui lòng nhập vào tuổi của bạn, ở trên nó. Đó là một câu hỏi hay. Yeah. SPEAKER 9: Vì vậy, đã sẽ là trong getInt () [Không nghe thấy]. Andi PENG: Không, nó thực sự không phải là. Vì vậy, tất cả điều này chỉ là nhắc một màn hình rỗng để người dùng nhập vào một cái gì đó. Nếu bạn muốn nó, nếu bạn muốn nó in ra một cái gì đó cho người sử dụng như thế nào, xin vui lòng cho tôi tuổi của bạn, sau đó bạn sẽ phải printf () mà bản thân. Bởi vì tất cả mọi người sử dụng này chức năng cho những thứ khác nhau, bạn có thể được lưu trữ tuổi, bạn có thể được lưu trữ địa chỉ, bạn có thể được lưu trữ số điện thoại. Và do đó, nó thực sự lên đến mục đích sử dụng cá nhân guys của bạn ' cho những gì bạn muốn nó nói. Yeah. SPEAKER 10: Vì vậy, chỉ cần làm rõ, nơi làm bạn nhập vào tên và tuổi để nó hiển thị lên ở vị trí của% s? Andi PENG: Như trong người sử dụng? SPEAKER 10: Vâng, như làm thế nào tôi làm it-- nơi nào tôi đặt Andi, và nơi nào tôi đặt 20? Andi PENG: Yeah. Vì vậy, nếu bạn đã thực sự chạy mã này, Tôi không thực sự đang chạy mã, đây là chỉ ở đây ngay bây giờ. Nếu tôi là để chạy các mã, tôi sẽ biên dịch mã, làm cho các tập tin, chạy mã này, và sau đó sẽ chỉ có hai không gian cho tôi để nhập vào nó. Yeah. Các bạn sẽ thấy khi bạn chơi xung quanh với các mã chính mình. Tất cả các bên phải chúng ta sẽ di chuyển vào phần tiếp theo của những gì chúng tôi sẽ được bao gồm ngày hôm nay. Chúng ta sẽ đi qua những gì câu điều kiện là. Vì vậy, nếu các bạn nhớ và nhớ lại từ bài giảng, câu điều kiện, tất cả họ đều là một bộ hướng dẫn để máy tính ở mà nếu một điều kiện nào đó là sự thật, bạn thực thi mã bên trong tình trạng đó. Vì vậy, trong Scratch-- cơ bản những chủ đề lớn từ hôm nay là bạn guys có đã được tất cả nhìn thấy logic đằng sau tất cả mọi thứ rằng chúng tôi đang bao phủ. Và tất cả chúng ta đang làm là dịch một cái gì đó đó là rất trực quan trong Scratch, và cứng mã hóa nó vào cú pháp chúng tôi sẽ được sử dụng cho các lớp học mà là C. Vì vậy, một cách hợp lý, tất cả các khối này là là đoạn mã ngay tại đó. Yeah. ĐƯỢC. Chúng tôi cũng nhận được vào một nếu ... khác tuyên bố đó chỉ là một lớp gia tăng phần phức tạp hơn khi tuyên bố nơi mà máy tính có một cái nhìn lúc này và xem sự, nếu tình trạng này là sự thật, làm bất cứ điều gì của hai bên trong dấu ngoặc này, else-- nên loại giống như mặc định nếu nó không đáp ứng được condition-- làm điều này. Nó giống như một ngã ba đường. Nếu trời mưa bên ngoài, tôi đặt trên áo mưa, cứ đều gì khác tôi không đưa vào một áo mưa. Có logic mà có ý nghĩa với tất cả mọi người? Cool. Được rồi. Vì vậy, như một ví dụ cứng này mà chúng ta sẽ thấy trong C là nếu tôi muốn tạo ra một biến gọi là giờ làm bài tập. Và nếu giờ bài tập về nhà là ít hơn năm, tôi nói cuộc sống là rất tốt. Rất tuyệt vời. Tuy nhiên, nói Cuộc đấu tranh là real-- đó là những gì tất cả chúng ta vào thứ hai này Chiều lên Science Hill là có thể làm ngay now-- Đung [cười] Andi PENG: Họ cách chúng tôi sẽ, cảm ơn bạn vì điều đó. Cách chúng tôi sẽ hardcode này trong C là if-- chúng ta hãy giả chúng tôi đã có một biến kiểu int gọi là giờ làm bài tập ngay tại đây. Nếu giờ bài tập về nhà là ít hơn năm printf (), Cuộc sống là tuyệt vời. Ghi giữ / n vì bạn muốn có một dòng mới sau. In khác, Các cuộc đấu tranh là có thật. Có phải mọi người hiểu như thế nào Tôi chuyển từ khối này vào khối mã này? Cool. Được rồi. Vì vậy, bây giờ chúng ta sẽ có một cái nhìn tại nhiều câu lệnh Nếu hoàn toàn. Vì vậy, chúng ta hãy giả định Mục đích của chương trình này đã được chúng tôi nhắc nhở người dùng cho một lớp. Chúng tôi nhắc sử dụng getInt () cho một lớp, và họ nhập vào một giá trị, và bạn muốn hiển thị loại lớp mà họ đã nhận. Vì vậy, nếu tôi đã thiết kế một chương trình, tôi có nghĩa là thường trong tất cả các đôi mắt của chúng tôi, 90-100 là một A, 80-90 là một B, và vân vân và vân vân. Điều gì là sai với điều này đoạn mã mà nó không làm những gì tôi muốn nó làm. Yeah. SPEAKER 11: Họ có giới hạn thấp hơn, nhưng họ không có giới hạn trên. Andi PENG: Chính xác. Tất cả mọi người đã nghe thấy cô ấy nói gì? Có sẽ là trên giới hạn, nhưng không giới hạn thấp hơn. Xin lỗi, cách khác xung quanh, giới hạn thấp hơn, không có giới hạn trên. Vì vậy, bạn muốn mất một đâm vào nói những gì sẽ được in trên này màn hình nếu tôi được là để chạy mã này. SPEAKER 11: Một lỗi? Andi PENG: Một lỗi? Đại đoán, không hoàn toàn đúng. Không ai có đâm nhau? Yeah, Aaron. AARON: Nếu bạn đặt vào một cái gì đó lớn hơn 90, nó sẽ hiển thị tất cả các lớp bạn có. Nó sẽ cho bạn thấy có một A, bạn đạt điểm B, bạn có một C. Andi PENG: Yeah. Đó chính quyền. Vì vậy, mà muốn được tuyệt vời. Tuy nhiên, họ đang cùng độc quyền, tôi nghĩ. Nếu tôi là để chạy đoạn mã này. Và sau đó hãy chỉ nói rằng, tôi đầu vào lớp 95. Vì vậy, 95 doanh nghiệp được lưu trữ trong các int được gọi là lớp. Và do đó, C là một ngôn ngữ chạy lên trên xuống dưới, do đó, nó sẽ luôn luôn chạy lên xuống dưới. Vì vậy, nó sẽ đến đây, nếu đọc lớp lớn hơn hoặc bằng 90, printf (), bạn có một A. Tuyệt vời, tôi có 95, đó là lớn hơn 90. Nó sẽ in, Tôi có một A. Nó sẽ để có một cái nhìn lúc này nếu, nó sẽ nói, cũng 95 cũng là lớn hơn 80, nó sẽ in bạn cũng có một Chấn một dấu chấm than B, và vv và vv vv. Vì vậy, như tất cả chúng ta có thể thấy, đây là một lỗi phổ biến có thể xảy ra khi chúng tôi viết code để tìm cho ra. Bất cứ ai, bất kỳ câu hỏi về tại sao điều đó đã xảy ra? Tuyệt vời. ĐƯỢC. Vì vậy, làm thế nào để chúng tôi khắc phục điều này, rõ ràng là câu hỏi tiếp theo logic. Vâng, chúng tôi có những đẹp điều được gọi là nếu người nào khác nếu người nào khác nếu báo cáo khác. Vì vậy, bạn có thể thấy, nếu bạn muốn để thay đổi vấn đề đó, bạn muốn làm cho mỗi điều kiện loại trừ lẫn nhau, bạn sẽ thêm một người nào khác ... nếu tuyên bố. Và những của course-- nghĩ về họ như thang, hoặc như nấc trên ladder-- bạn có thể thêm bao nhiêu trong số này là bạn muốn cho càng nhiều điều kiện như bạn muốn. Vì vậy, ở đây, nếu tôi đầu vào lớp là 95. Nếu lớp lớn hơn 95, printf (), tôi đã nhận một A. lớn. Nó sẽ nhìn thấy một người nào khác ... nếu và nó sẽ biết, Oh không, Tôi đã thực hiện lần đầu tiên khác. Tôi know-- hoặc if-- đầu tiên tôi biết rằng Tôi không phải nhìn vào bất kỳ của các bởi vì một trong số họ đã được sự thật. Vì vậy, nó sẽ chạy từ trên xuống. Ngay sau khi một trong những đầu tiên là đúng, sau đó nó sẽ bỏ qua tất cả các phần còn lại của ... ifs khác. Điều đó có ý nghĩa? Vì vậy, bằng cách này bạn có mức độ khác nhau của kiểm tra và ngay sau khi một trong số họ là sai, phần còn lại cũng là, họ thậm chí sẽ không kiểm tra. Cool. Được rồi. Vì vậy, đây là một ví dụ về một khác nhau loại câu lệnh điều kiện chúng ta thấy ít thường xuyên hơn, nhưng chúng ta sẽ thấy họ và sử dụng chúng. Và họ thường xuyên hơn hiệu quả cho những trường hợp nhất định. Vì vậy, chúng tôi có những gì được gọi là một câu lệnh switch. Vì vậy, trước khi chúng ta bao phủ một khác là những gì tuyên bố, một nếu ... khác tuyên bố. Ở đây, chúng ta có là gì gọi là báo cáo chuyển đổi. Vì vậy, khi chúng ta sử dụng công tắc báo cáo là chìa khóa? Vì vậy, trong một tuyên bố chuyển đổi, bạn thường, thông thường, thực ra bạn chỉ có thể số nguyên đầu vào cho bạn biến mà bạn đang kiểm tra. Vì vậy, nếu tôi muốn kiểm tra xem nếu một number-- nhất định ví dụ một lớp, nếu tôi có một 90. Tôi muốn nó để xem nếu đó là một A, B, hoặc C. Tôi có thể có một trường hợp ở đây. Tuy nhiên, các trường hợp có là không đổi khác. Vì vậy, trong ý nghĩa này, câu lệnh switch chỉ có thể kiểm tra bằng nhau của hai con số. Nó không kiểm tra bất cứ điều gì khác. Vì vậy, đó là một cái gì đó là rất cẩn thận khi bạn đang sử dụng này. Vì vậy, ở đây, nếu tôi muốn kiểm tra xem nếu lớp của tôi là 90, tương đương với 90 hoặc 80 hoặc 70 hoặc 60, và sau đó in các lớp tương ứng, Tôi có thể viết rằng trong một tuyên bố chuyển đổi. Vì vậy, nó sẽ đến đây, hãy kiểm tra là số nguyên này bằng hằng số này? Nếu không, nó sẽ bỏ qua. Là nó bằng không đổi hai, và như vậy và vân vân, cho đến khi bạn nhấn mặc định, nếu không ai trong số họ đều bình đẳng. Ngay sau khi một trong số họ được thiết lập để được bình đẳng, nó sẽ làm điều này dòng mã và nghỉ ngơi. Có nghĩa là nó sẽ đánh mà chạy, phá vỡ, và chỉ hoàn toàn bỏ qua đến dưới cùng của mã. Vì vậy, trong ý nghĩa là các loại chức năng như một nếu người nào khác nếu người nào khác nếu tuyên bố. Vì vậy, đây là một bê tông Ví dụ cho các bạn. Vì vậy, chúng ta hãy giả định rằng tôi muốn tạo ra một biến gọi là năm thành lập. Và tôi muốn nhắc nhở người dùng nhập vào năm mà trường đã được thành lập. Vì vậy, tôi có thể tạo ra một tuyên bố chuyển đổi ở đây. Và chúng ta hãy chỉ nói, tôi đầu vào năm 1636. Mã này ở đây sẽ cho thấy chuyển đổi năm thành lập bằng với năm 1636. Nó sẽ nhìn thấy trường hợp 1636, oh những đều bình đẳng, printf () nên không được tại đó các trường lên phía bắc? Bởi vì chúng tôi cho rằng họ không hãy vào đây nếu họ đi đến Harvard, phá vỡ và bỏ qua để kết thúc. Nếu tôi được đầu vào năm 1701, trong đó Tôi giả sử tất cả chúng ta sẽ nhập, nó sẽ bỏ qua trường hợp này, đến xuống đến trường hợp hai đó là 1701, và in Chào mừng bạn đến Yale! Phá vỡ, bỏ qua để kết thúc. Khác có thể bạn đang tham gia khóa học này trực tuyến trong đó case-- tuyệt vời chào đón để Yale-- nó sẽ đi đến in mặc định, Hello Internet! Và phá vỡ. Yeah. SPEAKER 12: Bạn có thể sử dụng khác thay vì mặc định đó? Andi PENG: Không, bởi vì cách mà toàn bộ chức năng này chuyển đổi được xây dựng, cú pháp bạn cần sử dụng là trường hợp trường hợp mặc định. Nó giống như nếu người nào khác nếu, này một trong đó là trường hợp trường hợp mặc định. Yeah. SPEAKER 13: Bạn có lẽ đã nói điều này, nhưng bạn có thể có nhiều hơn hai trường hợp? Andi PENG: Vâng, bạn có thể có nhiều trường hợp như bạn muốn. Hãy nghĩ về nó như là chỉ thích infinitely thêm vào. SPEAKER 14: Nếu bạn chuyển sang năm 1701 với 1636, nó không thực sự làm quyền khác biệt? Nó chỉ cần đi để được kiểm tra cho nó. Andi PENG: Đó là một Câu hỏi thực sự tốt. Và chúng tôi sẽ liên lạc khi sau này, nhưng chỉ biết đó là việc chuyển đổi tuyên bố là infinitely-- nó hiệu quả hơn nó và nếu else if bởi vì nó hoạt động sử dụng một loại khác nhau của chức năng đó cho phép bạn, về cơ bản, chỉ cần nhảy thẳng đến trường hợp bạn cần phải có. Yeah. SPEAKER 14: Cool. Cảm ơn. Andi PENG: Yeah SPEAKER 14: Và bạn có thể không làm trường hợp như thế và lớn hơn. Andi PENG: No. Vì vậy, đó là những gì đang hạn chế về tuyên bố chuyển đổi là bạn có có hằng số duy nhất, chỉ số nguyên. Yeah. ĐƯỢC. Vì vậy, đây là một cái gì đó mà bạn chàng trai sẽ gặp phải ít thường xuyên hơn của, nhưng tôi chỉ muốn giới thiệu nó trong trường hợp. Chúng tôi có ở đây những gì được gọi là một hành bậc ba. Trường hợp cơ bản, nó chỉ giống như một nếu tuyên bố biên dịch thành một dòng. Ở đây, tôi sẽ đi vào dòng tiếp theo, Trang tiếp theo, bởi vì nó dễ dàng hơn để xem. Vì vậy, chúng tôi đã nhìn thấy tất cả quyền này? Điều này là khá dễ dàng để làm theo. Nếu tôi muốn làm một biến gọi là chuỗi tên là s, nếu một số lượng nhất định Tôi cho nó là ít hơn 100, tôi muốn gán thấp đến chuỗi, khác tôi muốn gán cao. Điều này ở đây được làm chính xác những điều tương tự tám dòng mã đang làm. Vì vậy, ở đây tôi muốn tạo một chuỗi biến. Và đây là điều kiện tôi kiểm tra, nếu một số lượng nhỏ hơn 100, sau đó bạn gán giá trị thấp, khác gán giá trị cao. Các slide sẽ được trực tuyến, không phải lo lắng nếu các bạn không có được điều này xuống. Đây chỉ là một cách đơn giản, một nhiều hơn cách có hiệu quả các văn bản mã. ĐƯỢC. Vì vậy, bây giờ chúng ta sẽ nhập vào những gì, đối với hầu hết mọi người giống như một rất, rất khó hiểu điều để suy nghĩ về lần đầu tiên. Phần vòng lặp. Vì vậy, ngày hôm nay, chúng ta sẽ nói chuyện về ba loại của các vòng. Chúng ta sẽ bắt đầu với một thời gian vòng, sau đó nói về một việc phải làm trong khi vòng lặp, và sau đó nói về vòng lặp for. Vì vậy, về cơ bản, cho biết thêm học trực quan trên mạng, chúng ta có, về cơ bản, một đồ họa mô tả về những gì một vòng lặp trong khi làm. Vì vậy, trong một chương trình, bạn sẽ bắt đầu và nhập vào vòng tại một điểm nhất định. Bạn hãy kiểm tra một điều kiện. Và nếu điều kiện là đúng, bạn thực thi các mã bên trong. Và bạn đi lại xung quanh và bạn kiểm tra. Nếu nó vẫn đúng bạn tiếp tục chạy mã này xung quanh và xung quanh trong một vòng lặp. Tuy nhiên, thứ hai đó điều kiện trở thành sai, bạn sẽ phá vỡ và kết thúc vòng lặp. Và đây là cơ bản cú pháp bạn đang sử dụng. Trong khi một điều kiện nào đó là thực hiện điều này, nếu nó không đúng sự thật, bạn sẽ bỏ qua để kết thúc và di chuyển về phía trước với chương trình của bạn. ĐƯỢC. Có ai có một ví dụ về những gì có khả năng xảy ra nếu tôi cố gắng để chạy đoạn mã này? Bằng cách này, SAJ-- đó là Scaz, Andi, Jason-- chúng tôi sẽ ký tắt email của chúng tôi, Tình yêu, SAJ. Đó là chúng ta. ĐƯỢC. Bất cứ ai cũng có một ví dụ, hoặc có một ý tưởng về những gì này sẽ in? Loại một câu hỏi trick. Vì vậy, ở đây, hãy nhớ điều kiện chúng tôi đang kiểm tra là trong khi sự thật. Vì vậy, trong khi điều này là sự thật, đó là sẽ in, tôi yêu SAJ! Có bất kỳ điểm mà chúng tôi muốn thay đổi này đến bất cứ điều gì khác? Không, phải không? Vì vậy, ở đây, chúng tôi có gặp phải những gì có thể là sẽ được làm phiền rất nhiều chương trình của bạn, vòng lặp vô hạn. Bạn sẽ thấy rằng nếu bạn chạy đoạn mã này, nó chỉ là đi để giữ in ấn, tôi yêu SAJ! Trong khi chúng tôi đánh giá cao sự hỗ trợ, chúng tôi không muốn máy tính của bạn sụp đổ vì bạn giữ in Tôi yêu SAJ! Vì vậy, xin vui lòng, xin vui lòng, tránh các vòng lặp vô hạn bởi vì nó sẽ không bao giờ để đánh giá sai và bạn sẽ không bao giờ để rời khỏi vòng lặp. Và bạn sẽ được hút vào mãi mãi. Cool. ĐƯỢC. Loại thứ hai của vòng lặp chúng ta sẽ nói về ngày hôm nay là do trong khi vòng lặp, làm trong khi vòng lặp. Và nó được gọi là một việc phải làm trong khi vòng lặp bởi vì bạn có một việc cần làm và một thời gian. Vì vậy, điều này là khá tương tự như một trong khi vòng lặp, nhưng một chút khác nhau. Ở đây, bạn đang đi làm bất cứ điều gì của bên này trong khi một điều kiện nào đó là sự thật. Vì vậy, nếu tôi là C và máy tính tôi chạy xuống đoạn mã này, Tôi có một cái nhìn ở đầu trang. Tôi đi đến C, tôi nói làm điều này. Và sau đó tôi kiểm tra, trong khi điều này là đúng, tôi phải lặp lại nó. Nhưng trong khi điều này là sai, sau đó tôi chuyển về phía trước và tôi không bao giờ quay trở lại vòng lặp đó một lần nữa. Ai cũng có thể sử dụng những đòn vào những gì là sự khác biệt giữa vòng lặp này và một trong chúng tôi chỉ nhìn vào đã được thực tế. Yeah. SPEAKER 15: Các điều kiện đến sau thay vì trước đây? Andi PENG: Chính xác. Vì vậy, cô cho biết điều kiện đến sau, không phải trước. Cuối cùng, sự khác biệt giữa điều này và vòng lặp trong khi là bạn chỉ cần đi làm bất cứ điều gì của bên này bất kể có hay không tình trạng của bạn sự thật, và sau đó kiểm tra điều kiện. Vì vậy, trong trường hợp này, bạn always-- theo cách này, bạn luôn luôn đảm bảo bất cứ điều gì bên trong chạy ít nhất một lần trước khi kiểm tra để xem nếu bạn muốn nó chạy lại. Và đây là một ví dụ khi chúng ta sẽ sử dụng nó. Vì vậy, ví dụ, nếu tôi muốn có một biến kiểu int có tên tuổi, và tôi muốn nhắc nhở người sử dụng so với tuổi của họ, Tôi sẽ làm printf () Bạn bao nhiêu tuổi? tuổi = getInt (), mà đang khiến cho người sử dụng. Và một số người sẽ được thực sự gây phiền nhiễu. Và bạn không muốn lỗi trong bạn chương trình của ai đó nhập vào như thế, oh tôi tiêu cực 4 tuổi hoặc bất cứ điều gì. Trong trường hợp nếu họ mà làm điều đó, điều này đánh giá cho đúng, có nghĩa là tôi sẽ phải tiếp tục đi lại và làm điều này. Vì vậy, điều này sẽ giữ lại khiến người sử dụng để cung cấp cho bạn như một thực số tuổi và nó sẽ tiếp tục đi lại và làm lại nó cho đến khi họ cung cấp cho bạn một tuổi thật lớn hơn một, hoặc không phải số không. Vì vậy, gợi ý, gợi ý. Điều này sẽ rất, rất hữu ích cho một trong những vấn đề PSet của bạn. Yeah. SPEAKER 16: Lỗi chính, xin lỗi. Andi PENG: Yep. SPEAKER 16: Có, không là một asshole, but-- Andi PENG: Không có lo lắng. SPEAKER 16: --are có quy tắc khác nhau ở đây, hay bạn chỉ cần quên đặt báo giá? Andi Peng: Oh Yeah. Xin lỗi, đó là hoàn toàn xấu của tôi. Đó chắc chắn nghĩa vụ phải được trích dẫn. Nắm bắt tốt. Điều đó sẽ không chạy. ĐƯỢC. Vì vậy, loại cuối cùng của vòng lặp chúng ta sẽ nói về, và cuối cùng, loại nhiều nhất phức tạp là cho vòng lặp. Đừng lo lắng nếu bạn không biết điều đó có nghĩa. Nó khá khó hiểu lúc đầu tiên. Chúng tôi sẽ đi qua một ví dụ. Tất cả những gì xảy ra trong một vòng lặp for là bạn có ba câu rằng bạn đang đi để bao gồm. Vì vậy, đối với một điều nào đó, bạn sẽ khởi tạo một biến. Bạn sẽ thêm điều kiện để mà vòng lặp này sẽ tiếp tục chạy. Và sau đó, vào cuối của vòng lặp, bạn sẽ cập nhật nó. Bạn có thể cập nhật các biến mà bạn muốn theo dõi. Vì vậy, chúng ta thường sử dụng cho vòng cho khi chúng ta muốn chạy một vòng lặp cho một số tiền nhất định của thời gian và chúng ta đã biết, Oh tôi muốn vòng lặp này để thực thi như 10 lần, sau đó bạn do-- tôi sẽ đi qua một ví dụ ở trang tiếp theo. Vì vậy, ở đây chẳng hạn, trong Scratch, nếu bạn muốn một cái gì đó để lặp lại 10 lần, tất cả các bạn đã cho tôi và nói, lặp lại 10 lần tôi yêu SAJ! mà là một chấp nhận hơn chương trình hỗ trợ cho chúng tôi chứ không phải là vòng lặp vô hạn. Ở đây, làm thế nào bạn sẽ chuyển đổi sang C và viết đó là cho int-- tôi sẽ tạo ra hoặc khai báo một biến kiểu int có tên tôi. Tôi sẽ phải khởi tạo nó là 0, do đó i = 0; và điều này là có được tình trạng của tôi. Vì vậy, tôi là ít hơn 10. Và sau đó tại end-- báo cáo cuối cùng bạn sẽ phải là bản cập nhật của những gì xảy ra với tôi biến ở cuối cho bạn vòng lặp. Vì vậy, nó là loại khó hiểu, bởi vì các phần khác nhau của dòng này đang xảy ra khác nhau loại khỏi vòng lặp. Nhưng tôi sẽ đi qua một ví dụ giả đó và có thể giải thích điều này chỉ là một chút tốt hơn. Vì vậy, ở đây. Đó là các vòng lặp, chúng tôi chỉ thấy. Về cơ bản trong giả, những gì đang xảy ra trong chương trình này, là lần đầu tiên tôi là tạo i, khởi tạo nó để 0. Tôi đang kiểm tra để xem nếu tôi là ít hơn 10, trong trường hợp này lần đầu tiên nó là vì 0 là ít hơn 10. Vì vậy, các vòng lặp sẽ chạy. Và sau đó tôi sẽ in dòng này. Và sau đó vào cuối của dòng này, phải ở đây, tôi sẽ làm tăng i, i ++, bài này có nghĩa là incrementing nó một. Vì vậy, tôi bây giờ là 1. Bởi vì nó đã từng là 0, nếu tôi increment nó, bây giờ 1. Và sau đó tôi sẽ quay trở lại đến đầu vòng lặp và tôi kiểm tra điều kiện. Là điều kiện vẫn còn đúng? Có, 1 vẫn còn ít hơn 10. Vì vậy, nó sẽ in này một lần nữa, đi và sau đó tăng i, và kiểm tra điều kiện liên tục, liên tục, cho đến khi bạn cuối cùng có được đến điểm mà tôi mới 10 tuổi. Bạn đang chuẩn bị in này 10 lần và sau đó tôi sẽ bằng 10. Bạn sẽ kiểm tra điều kiện. Là 10 ít hơn 10? Không, đó là sai. Như vậy, vòng lặp này không phải là đi để chạy, nó sẽ phá vỡ, và bạn sẽ tiếp tục với mã của bạn. Vì vậy, các bạn có thể thấy, đây là một ví dụ thực sự tuyệt vời của một vòng lặp bạn có thể lập trình trong đó chạy cho một số quy định về thời gian. Mỗi một rõ ràng? Yeah. SPEAKER 17: Làm thế nào về tăng theo cấp số nhân, là nó mã hóa khác nhau? Andi PENG: Bạn can-- chúng ta sẽ đi trên này trong slide tiếp theo. Câu hỏi hay. Là anyone-- trước khi tôi di chuyển on-- ai cả lẫn lộn, bởi vì đây là một khái niệm thực sự khó khăn. Không có lo lắng, nếu you're-- OK. Cool. Được rồi. Chỉ cần một slide chung. Vòng lặp trong khi điều này là làm chính xác cùng một điều cho vòng lặp là. Nó chỉ được viết một cách khác nhau. Các bạn có thể kiểm tra nội dung các slide thuận tiện của bạn sau này. Nhưng chỉ biết rằng có nhiều cách viết những điều tương tự xảy ra với các vòng khác nhau. ĐƯỢC. Vì vậy, bây giờ chúng tôi có được trong câu hỏi về những gì nếu chúng ta có một vòng lặp bên trong một vòng lặp. Chúng tôi đang đi vào thực tế Inception loại công cụ ở đây. Khi bạn muốn làm những điều nhiều lần bên thứ khác mà làm những việc nhiều lần, bạn muốn những gì gọi là lồng nhau cho vòng lặp. Đối với những người bạn của những người đầu tiên nhìn thấy điều này và được rất bối rối, tất cả chúng ta đang làm ở đây là có một vòng lặp for nơi chúng tôi có một biến hàng. Nhưng bên trong của nó, chúng tôi cũng có một cho vòng lặp của một biến gọi là cột. Và tôi đánh giá cao đề nghị tất cả các bạn người đang bối rối để giữ đầu tiên track-- vẽ này ra, vẽ ra này. Đừng cố gắng để chỉ lý do thông qua đó, vẽ nó ra. Trong đầu của bạn, trên mảnh giấy, hoặc bất cứ điều gì, ghi liên tiếp, theo dõi những gì hàng bằng. Viết cột, theo dõi của những cột bằng. Và theo dõi là gì in ra với mỗi lần lặp. Mỗi lần lặp của vòng lặp này, mỗi lần lặp của vòng lặp đó lớn hơn, chỉ cần giữ theo logic. Và tôi đảm bảo với bạn, bạn sẽ yêu thích những gì bạn nhìn thấy, vì nó cũng rất áp dụng cho bộ vấn đề của bạn. Cool. Được rồi. Vì vậy, điều quan trọng nhất rằng các bạn là có lẽ tất cả suy nghĩ về ngay bây giờ, Vấn đề là bạn Đặt 1s, mà là do những thứ Năm / Thứ Sáu. Trong chương trình water.c của bạn, gợi ý bạn sẽ có để nhắc nhở người dùng cho một đầu vào. Trong chương trình mario.c của bạn bạn sẽ có sử dụng một lồng nhau cho vòng lặp, mà là một vòng lặp cho bên trong một vòng lặp for, in một khối kim tự tháp, về cơ bản giống như những gì Mario đã nhảy qua. Và sau đó bên trong greedy-- của bạn hoặc có thể Làm thay đổi, nếu có của các bạn đã bao giờ nghe nói về that-- bạn sẽ phải rất cẩn thận của các giá trị điểm nổi đầu tiên. Ghi thập phân nổi và số nguyên không phải là những điều tương tự. Theo dõi trong đó là một trong đó. Và bạn đang sử dụng câu điều kiện, là tốt. Tất cả các quyền, điều cuối cùng. Tôi đã có một vài phút còn lại. Style. Vì vậy, đây là một cái gì đó không thực hiện việc hiệu quả, hoặc các hoạt động thực tế của mã của bạn. Tuy nhiên, nó ảnh hưởng chúng ta như học sinh lớp của bạn, như độc giả của bạn. Điều đó tác động chính mình, nếu bạn cố gắng để tìm thấy một vấn đề. Điều đó tác động khả năng đọc mã của bạn. Vì vậy, phong cách, giống như khi bạn đang cố gắng để kiểu một bài luận tiếng Anh, nếu bạn không có đoạn văn, bạn có tất cả mọi thứ loại của lộn xộn với nhau trên cùng một dòng, nó làm cho nó thực sự khó khăn cho bất cứ ai đọc bài của bạn, ngay cả khi điểm của bạn là hợp lý âm thanh. Cùng một điều trong lập trình. Bạn có thể có tối nghĩa khủng khiếp mã mà Scaz sẽ bao gồm, và nó vẫn có thể chạy và chức năng. Nhưng với chúng tôi, như hỗ trợ kỹ thuật đáng yêu của bạn, những người sẽ được đọc và đánh giá PSets của bạn, đó không phải là rất tốt đẹp. Vì vậy, xin vui lòng, vì lợi ích của chúng tôi và bản thân mình, khi bạn đang cố gắng để sửa chữa một vấn đề trong mã của bạn, và bạn đang cố gắng để đọc mã riêng của bạn, làm cho chắc chắn rằng bạn làm theo một số quy ước rằng chúng ta sẽ đi qua. Vì vậy, đầu tiên. Cung cấp cho các biến của bạn tên đầy ý nghĩa. Nếu bạn muốn lưu trữ một số nguyên gọi là tuổi tác, hãy đặt tên nó tuổi. Đừng đặt tên là chiều cao. Khi bạn đang cố gắng để lưu trữ một thời đại ở chiều cao, nó làm cho tất cả mọi thứ rất khó hiểu đối với chúng tôi. Chúng tôi không muốn bị nhầm lẫn. Bạn không muốn bị nhầm lẫn. Không ai muốn bị nhầm lẫn. Nếu bạn đang đi để tạo ra một cái gì đó, đặt tên cho nó một cái gì đó có ý nghĩa. Tuy nhiên, trong vòng lặp, đơn biến nhân vật thường là tốt. Và trong vòng lặp, nếu bạn muốn chỉ i, và j, k, cảm thấy tự do để chỉ làm điều đó. Khởi tạo phù hợp. Vì vậy, có nghĩa là gì? Điều đó có nghĩa là về mặt kỹ thuật, về mặt lý thuyết, bạn có thể khởi động và tạo ra nhiều biến số trên cùng một dòng. Vì vậy, ví dụ, tôi có thể tạo ra một số nguyên được gọi là scaz_age, và số nguyên được gọi là andi_age = 20, và một số nguyên được gọi là jason_age trên cùng một dòng. Và tôi cũng có thể chỉ định chỉ có một trong họ và không phải là những người khác để giá trị. Chúng tôi yêu cầu bạn vui lòng không làm điều đó. Bởi vì ở đây bạn đã cơ bản tạo ba biến, nhưng chỉ một trong số họ thực sự có giá trị. Và sau đó khi chúng tôi cố gắng để đọc code của bạn, hoặc nếu bạn đang cố gắng để sửa chữa một vấn đề trong mã của bạn, nó rất khó hiểu để làm theo. Vì vậy, chỉ cho dễ đọc của bạn, cho khả năng đọc của chúng tôi, không làm điều đó. Dấu ngoặc nhọn phù hợp. Một số người thích để đưa họ dấu ngoặc nhọn ở những nơi khác nhau. Nó không thực sự quan trọng. Chỉ cần chắc chắn rằng bạn đang ở quán của bạn mã riêng vào nơi bạn muốn đặt chúng. Khoảng cách nhất quán. Nếu bạn đặt một không gian sau một cho vòng lặp, luôn luôn làm điều đó. Không chỉ thích loại làm điều đó ở một số nơi, không làm điều đó ở những người khác. Chỉ cần được nhất quán. Thứ hai, nếu ai muốn kiểm tra nội dung các CS50 Style Guide, chúng tôi chính thức có một hướng dẫn phong cách cho tất cả những ước bạn, cộng thêm nhiều hơn. Đó là trực tuyến. Nó giống như cs50.net/style hay đại loại thế. Bạn có thể google nó. Tính nhất quán là chìa khóa. Vì vậy, đừng lo lắng gì người khác đang làm, chỉ cần đảm bảo rằng bạn đang phù hợp trong mã của riêng bạn. Bất cứ ai có bất kỳ câu hỏi về điều đó? Yeah. SPEAKER 18: Vì vậy, điều thích hợp để làm với khởi chỉ là có tất cả trong một riêng biệt dòng, đó là những gì bạn đang nói? Andi PENG: Vì vậy, tôi hiếm khi có điều này xảy ra. Nhưng nếu bạn muốn, nếu bạn muốn để được như tiết kiệm không gian trong mã của bạn, hoặc bất cứ điều gì, bạn có thể làm điều này. Chúng tôi yêu cầu bạn chỉ cần không khởi tạo một điều và không phải là người khác. Vì vậy, nếu bạn muốn làm int scaz_age, int andi_age, int jason_age, đó là tốt. Chỉ cần không khởi tạo một và không phải là những người khác là tất cả. Câu hỏi? Được rồi. Tôi sẽ vượt qua khỏi sự microphone, và con trỏ laser, và dùi cui để Scaz vào thời điểm này. Đây là khó xử. Ở đây nó được. BRIAN SCASSELLATI: Cảm ơn bạn. Thế nào cho âm thanh? Âm thanh là tốt? . Tuyệt vời. ĐƯỢC. Vì vậy, hi tất cả mọi người. Tôi sẽ cố gắng làm việc thông qua một ví dụ thực tế với bạn. Và chúng ta sẽ sử dụng CS50 của môi trường phát triển, những gì được gọi là Môi trường phát triển tích hợp. Và bạn đã nhìn thấy điều này chứng minh trong bài giảng. Và trong vấn đề Set 1, bạn sẽ có một cơ hội để sử dụng nó, và chơi xung quanh với nó, và được quen với nó, bởi vì chúng ta sẽ sử dụng nó qua phần còn lại của học kỳ. Vì vậy, trong IDE này, bạn có những gì trông giống như một trình duyệt tập tin rất truyền thống qua một bên. Bạn đã có một phần lên top nơi bạn đang đi để xem mã nguồn của bạn, của bạn Cfile, mã mà bạn viết. Và xuống dưới, bạn sẽ có một cửa sổ terminal trong đó bạn sẽ được sử dụng để cả biên dịch chương trình của bạn và để chạy hoặc thực thi chương trình của bạn. ĐƯỢC. Như vậy chỉ cần cung cấp cho chúng ta một chút nền tảng, trong đó cửa sổ thiết bị đầu cuối, bạn sẽ được sử dụng một tập hợp các lệnh đó là các lệnh chuẩn trong suốt nhất của Unix hoặc Linux. Và do đó, nếu bạn đã từng sử dụng bất kỳ hình thức của Unix, Ubuntu, hoặc bất kỳ của các hương vị khác, những sẽ nhìn quen thuộc. Nếu bạn chưa có, đừng lo lắng. Không có gì phức tạp về họ cả. Họ chỉ cần sử dụng một khác nhau cú pháp, một cách đặt tên khác nhau ước hơn bạn đã từng thấy trước đây. Vì vậy, để ra khỏi danh sách các tập tin trong một thư mục cụ thể, chúng ta sẽ sử dụng một lệnh gọi là ls, hoặc danh sách. Nếu bạn muốn xem tất cả mọi thứ với tất cả các chi tiết, bạn sẽ sử dụng một lệnh đối số dòng với ls -l. Và đó sẽ cho bạn thấy tất cả mọi thứ chi tiết hơn, bao gồm cả các điều khoản cho một tập tin. Để thay đổi thư mục, bạn sẽ sử dụng lệnh cd. Và bạn sẽ có thể thay đổi thư mục cả hai để đi đến thư mục nhà của bạn. Đó chỉ là cd tất cả bởi chính nó, cd với hai chấm sẽ trả lại cho bạn lên một mức vào thư mục trước đó của bạn. Và bạn cũng có thể để một cd thư mục con bằng cách gõ cd và tên của thư mục con. Bạn cũng có thể tạo thư mục mới. Và chúng ta sẽ đi bộ thông qua điều này chỉ trong một phút. Nhưng chỉ để đặt tất cả mọi thứ trên màn hình. Vì vậy mà bạn có thể nhìn thấy chúng. Bạn cũng sẽ có khả năng để thao tác tập tin trực tiếp từ dòng lệnh. Bạn sẽ có thể sao chép chúng, để di chuyển chúng, hoặc để loại bỏ chúng, đó là, có hiệu quả, để xóa chúng. Các IDE CS50 cung cấp cho bạn đầy đủ sức mạnh của đối số dòng lệnh. Và điều đó có nghĩa là bạn cũng có thể làm những việc rất nguy hiểm. ĐƯỢC. Ví dụ, bạn có thể loại bỏ, hoặc là xóa, một tập tin mà không cần hỏi cho một xác nhận. Và thậm chí bạn có thể loại bỏ recursively-- đó các dấu gạch ngang r flag-- một toàn bộ thư mục con và tất cả các nội dung của nó. ĐƯỢC. Chúng được liệt kê trong màu đỏ bởi vì bạn nên suy nghĩ "nguy hiểm" mỗi lần bạn nhìn thấy những điều đó. ĐƯỢC. Được rồi. Bây giờ cuối cùng, những điều đó là sẽ rất có giá trị cho bạn, là có một vài thủ thuật tốt để biết khi bạn đang điều hướng qua cửa sổ terminal này. Đầu tiên, bạn có thể xóa màn hình tại bất kỳ thời gian bằng cách chỉ cần gõ vào rõ ràng. Và bạn sẽ thấy tôi làm điều đó khá thường xuyên. Bạn cũng có thể chỉ hiển thị các văn bản của một tập tin bằng cách gõ nhiều hơn và sau đó là tên file. Sau đó bạn sẽ có thể di chuyển trở lại và ra với điều đó chỉ với các phím dài và các phím mũi tên. Nếu bạn có, như chúng ta đã làm ngày hôm nay trong bài giảng, một chương trình được chạy liên tục trong vòng lặp vô hạn, bạn có thể dừng chương trình từ thực hiện bằng cách gõ trong kiểm soát, đó là tổ chức xuống Control-C. Và bạn có thể phải làm này nhiều lần. Các máy tính được xa phía trước của bạn. Và đôi khi bạn cần cung cấp cho nó một vài cố gắng trước khi nó thực sự sẽ đi qua. Bạn cũng sẽ có thể sắp xếp thông qua các lệnh mà bạn chỉ cần gõ chữ bằng cách sử dụng phím lên, phím mũi tên, rồi bấm phím mũi tên xuống. Và những gì là hữu ích nhất là thay vì gõ ra tên tập tin dài, bạn sẽ có thể để các Tab sử dụng để tự động hoàn thành một vài hướng dẫn. Bây giờ chúng ta sẽ chứng minh tất cả những người chỉ trong một giây. Vì vậy, nếu bạn không nhớ chúng, đừng lo lắng. Đây là điều mà bạn sẽ thấy nhận và sử dụng khi chúng ta đi. ĐƯỢC. Vì vậy, trong C-- không giống như trong Scratch-- C là một ngôn ngữ biên dịch. Điều đó có nghĩa là chúng ta sẽ mất một nguồn file-- đó là văn bản mà bạn viết, các lệnh mà bạn viết, printf () báo cáo, các vòng lặp, tất cả mọi thứ else-- và chúng ta sẽ để file đó và đưa nó ra một chương trình được gọi là trình biên dịch. Trình biên dịch sau đó sẽ đưa rằng văn bản mà bạn đã viết và chuyển nó thành các hướng dẫn nhị phân rằng máy tính của bạn thực sự sẽ sử dụng. Đó gọi là đối tượng hoặc các tập tin thực thi. Nếu bạn nhìn vào tập tin này, bạn sẽ để xem mã mà bạn đã viết. Nếu bạn nhìn vào tập tin này, bạn sẽ để xem một chuỗi ngẫu nhiên của các nhân vật mà làm cho không có ý nghĩa gì. Đó là bởi vì đây là nhị phân. Nó không có nghĩa là để cho bạn được đọc. Tuy nhiên, bất cứ lúc nào bạn muốn chạy một cái gì đó, những gì bạn đang đi để được chạy là tập tin đối tượng này. Vì vậy, khi chúng tôi làm việc với các các tập tin, chúng tôi sẽ viết một tập tin trong C. Sau đó chúng tôi sẽ biên dịch nó, bằng cách sử dụng một lệnh như make và sẽ gọi các clang biên dịch cho ngôn ngữ C. Và điều đó sẽ tạo ra một đối tượng nộp, như một ra ngoài, hoặc trong trường hợp này, tên, tập tin của tôi, mà tôi đã đặt vào. Được rồi. Vì vậy, hãy thực sự cố gắng này. Vì vậy, tôi đã đưa ra một ví dụ những gì tôi muốn thử. Và một trong những điều mà mê hoặc tôi là hình ảnh động. Vì vậy, chúng ta sẽ cố gắng để làm một chút hình ảnh động chỉ sử dụng các ký tự ASCII. Nhân vật chúng ta có thể dễ dàng in ra bây giờ. Vì vậy, đây là nỗ lực tốt nhất của tôi ở việc tạo ra cho bạn các hình ảnh động của một chú thỏ chạy qua đám cỏ cao. Hiện ông là. ĐƯỢC. Vì vậy, ông không chạy, nhưng anh ấy đứng đó trong cỏ cao. Bây giờ nếu tôi là một phim hoạt hình, trong các trường học cũ phiên bản của phim hoạt hình, những gì tôi sẽ làm được tôi sẽ sản xuất một hình ảnh của chú thỏ này trong cỏ. Và sau đó tôi sẽ sản xuất picture-- khác khác những gì họ gọi là cell-- đó đã chú thỏ chỉ hơi di chuyển. Và sau đó một một phần ba mà có bunny chuyển một chút nữa. Và tôi sẽ tạo ra một toàn bộ tự của các tế bào. Một số nơi chú thỏ đã qua vào phía bên tay trái. Và sau đó di chuyển chậm chạp, một bởi một đối giữa. Và sau đó từ giữa trên bên phải. Và nếu tôi là sau đó, thực sự may mắn, tôi có thể đặt nó lại với nhau và tôi có thể làm động chúng. Và có chú thỏ của tôi chạy qua đám cỏ. Đó là PowerPoint lớn của tôi lừa trong ngày. ĐƯỢC. Vì vậy, đây là tốt như nó được. ĐƯỢC. Vì vậy, ở đây một lần nữa, đây là của chúng tôi bunny chạy qua đám cỏ. SPEAKER 19: Một lần nữa. BRIAN SCASSELLATI: Một nhiều thời gian hơn, tất cả các quyền. Có chú thỏ của bạn. ĐƯỢC. Vì vậy, hôm nay những gì chúng ta đang đi làm là chúng ta đang đi để cố gắng để tự động hóa quá trình sản xuất các tế bào này. Chúng tôi sẽ không hoàn toàn nhận được đến điểm được có thể đặt chúng lại với nhau. Nhưng, chúng ta sẽ cố gắng để tự động hóa Quá trình tạo chuỗi này. Và đây là phần lớn những gì hoạt hình ngày nay là như thế. Đó là, bạn không nhất thiết phải làm những việc bằng cách vẽ mọi thứ bằng tay. Chúng tôi sử dụng một máy tính để tự động hóa các bộ phận của quá trình đó. ĐƯỢC. Vì vậy, hãy để tôi chuyển sang bây giờ để IDE CS50 của chúng tôi. Và tôi đã tạo cho us-- và để tôi phóng to ở đây một chút bit-- tôi đã tạo ra cho chúng ta một điểm khởi đầu. Mỗi khi chúng tôi yêu cầu bạn phải ngồi xuống và viết một đoạn mã, những gì chúng tôi đang thực sự yêu cầu bạn phải làm là chúng tôi đang yêu cầu để giải quyết một vấn đề. Và cách mà bạn nên suy nghĩ về việc đó là bằng cách bắt đầu với một số phần đơn giản của giải pháp đó. Và sau đó xây dựng ra từ phần đó. Và đó là những gì chúng ta sẽ làm ngày hôm nay. Vì vậy, thay vì cố gắng để tất cả cùng một lúc viết toàn bộ loạt các mã đó là sẽ sản xuất những 10 tế bào hoạt hình, chúng ta sẽ bắt đầu thay với một mảnh mà làm việc. Và sau đó chúng tôi sẽ xây dựng một chút xung quanh đó và nhiều hơn một chút và thêm một chút. Bây giờ những điều tốt về giải quyết vấn đề theo cách này là nó sẽ cho phép bạn để bắt đầu luôn luôn có một cái gì đó mà bạn biết hoạt động và giới thiệu một sự thay đổi dần dần. Và đó là một cách tuyệt vời để tìm hiểu làm thế nào để viết mã, bởi vì mỗi khi bạn thực hiện một thay đổi, bạn sẽ thấy những gì tác động mà nó có. ĐƯỢC. Vì vậy, đây là điểm khởi đầu của chúng tôi. ĐƯỢC. Vì vậy, vào lúc bắt đầu của tập tin của tôi, Tôi đã băm #included stdio.h. Đó là vì vậy mà tôi có thể nhận được printf () để làm việc. Tôi sau đó tôi có chức năng chính của tôi. Và điều này vẫn có vẻ một chút phức tạp hoặc tối nghĩa cho một số bạn. Vậy là được rồi. Tất cả nó nói là các chức năng chính mất không có khoảng trống arguments-- phương tiện không có gì trong C. Và nó lợi nhuận theo quy ước một số nguyên. Chính luôn luôn trả về một số nguyên, thường một mã nói những điều cũng đã đi hay không đi tốt. ĐƯỢC. Nhưng chính có để có mà tạo cho chúng tôi ngay bây giờ. Tôi đã sau đó đặt vào ba dòng mã. Và cùng với mỗi dòng mã, tôi đã đặt một bình luận. Giờ đây, một trong những điều mà chúng tôi sẽ nhấn mạnh rằng bạn làm, và nó là như vậy quan trọng thực hành lập trình, là luôn luôn nhận xét mã của bạn. Luôn viết ra trong một Anh bình luận gì đó ông nghĩ rằng đại mã có nghĩa vụ phải làm. Bằng cách đó, sau này khi bạn quay trở lại nó, bạn có thể nhìn vào nó và bạn có thể nói, oh, tôi nhớ những gì tôi đã cố gắng để làm với điều này. Hoặc khi một TA ngồi xuống với bạn cố gắng giúp bạn trong giờ văn phòng, họ có thể nhìn vào và đi, tôi xem những gì bạn đang cố gắng để làm, nhưng thay vì đây là những gì đang thực sự xảy ra. ĐƯỢC. Vì vậy, tôi đã có ba phần mã của tôi, Tôi sẽ đầu tiên của tất cả các bản in ra một số dấu chấm ở đầu. Sau đó tôi sẽ in ra của tôi bunny cực kỳ lạ mắt. Và sau đó một số bit của dấu chấm ở cuối. Và ba báo cáo in nên trông quen thuộc với bạn tại thời điểm này. Tất cả những gì tôi đang làm trong mỗi người trong số họ là tôi in ra một chuỗi các ký tự. Không có biến có liên quan. Tất cả mọi thứ chỉ là phẳng. ĐƯỢC. Vì vậy, nếu tôi đi xuống bây giờ để terminal-- của tôi chúng ta hãy xem nếu tôi có thể trở lại này out-- và tôi sẽ gõ rõ ràng một lần nữa. SPEAKER 20: Chúng ta sử dụng các dấu gạch chéo kép để bình luận? BRIAN SCASSELLATI: Can sử dụng có double--. Có nhiều cách để để lại ý kiến ​​trong C. Một cách là sử dụng các dấu gạch chéo kép. Các khác là sử dụng một dấu gạch chéo và một ngôi sao và sau đó đóng với một ngôi sao và một dấu gạch chéo. Được rồi. Trước hết, tôi sẽ bắt đầu điều hướng quanh đây. Vì vậy, nếu tôi đi đến thư mục nhà của tôi, Tôi đã thay đổi thư mục ở đây, Tôi sẽ xem xét và xem những gì trong thư mục đó, ls, ra khỏi danh sách. Tôi sẽ thấy rằng tôi đã có hai thư mục con. Hãy làm lớn hơn một chút ở đây vì vậy mà tất cả chúng ta có thể nhìn thấy nó. Tôi có thể thấy rằng tôi đã có hai thư mục con. Tôi sẽ thay đổi thư mục để đi vào không gian làm việc. Và tôi sẽ chỉ gõ ra một phần của nó, và sau đó chỉ cần nhấn Tab. Và nó sẽ hoàn tất phần còn lại cho tôi. Fancy. Tôi sẽ xem xét và nhìn thấy trong không gian làm việc. Và ngay bây giờ, tôi đang làm việc trên SuperSection rằng chúng tôi đang giảng dạy ngay bây giờ. Vì vậy, tôi sẽ đi vào thư mục đó. Và cuối cùng, nhìn xem. Và tôi đã nhận rằng tập tin bunny.c. Tất cả các quyền như vậy cho tôi rõ ràng một lần nữa. Và tôi sẽ now-- nữa tôi vẫn còn ở trong thư mục đó và nó nói với tôi rằng tôi đang ở thư mục đó SuperSection. Tôi sẽ đi trước và làm cho chương trình thỏ của tôi. Và lệnh đó, làm cho thỏ, trong khi nghe một chút lẻ, cũng gọi trình biên dịch kêu vang. Và nó được sản xuất cho cho tôi một đầu ra đó là một funny-- một thực thi tập tin thực thi được gọi là thỏ. ĐƯỢC. Tôi có thể sau đó, và điều này nghe thậm chí tồi tệ hơn, thực hiện bunny. ĐƯỢC. Và chúng ta hãy xem những gì nó. ĐƯỢC. Đó là một chút những gì tôi mong đợi. Tôi đã có hình chú thỏ của mình vào đó, nhưng tôi loại muốn tất cả bởi chính nó. Tôi đã bỏ lỡ những gì? SPEAKER 21: Slash l hay n slash. BRIAN SCASSELLATI: Slash n. ĐƯỢC. Vì vậy, chúng ta hãy quay trở lại ra đây. Và tôi sẽ nhận ra điều đó. Và tôi sẽ quay trở lại vào trong này. Và chúng ta hãy có một cái nhìn doanh nghiệp từ chức năng chính của tôi ở đây. Vì vậy, tôi nên làm gì? Tôi muốn kết thúc dòng. Vì vậy, tôi sẽ đặt trong một bình luận. Tôi sẽ đặt trong một printf (). Và những gì tôi có phải đặt trong? / n. ĐƯỢC. Tôi phải làm gì để kết thúc nó với? Dấu chấm phẩy. Được rồi. Bây giờ, một trong những thực sự điều quan trọng là đảm bảo mỗi khi bạn thực hiện một sự thay đổi trong mã của bạn, bạn nên lưu nó. Nếu bạn không lưu mã của bạn, bạn sẽ nhận thấy có một ngôi sao nhỏ trên đó. Và ngôi sao đó nói bạn không lưu mã này. Nếu tôi biên dịch nó ngay bây giờ, nó không sẽ phản ánh bất kỳ của những thay đổi đó, vì trình biên dịch nhìn vào các tập tin đó là trên đĩa, không phải là tập tin đó là mở trong trình soạn thảo của bạn. Được rồi. Vì vậy, hãy lưu nó và sau đó chúng ta sẽ đi ngay trên xuống đây, trở lại ra ngoài. Đi xuống đến thiết bị đầu cuối của tôi. Và chúng ta cần xóa không gian một lần nữa. Và chúng ta có thể đi trước và thêm một thời gian thực hiện chương trình chú thỏ của chúng tôi. Và thực hiện các chú thỏ. Điều đó không làm việc, hoặc. Sai dấu gạch chéo. Vì vậy, nếu bạn nhìn vào những gì tôi đã có, tôi đặt một / n trong đó, nhưng tôi đã có những dấu gạch chéo sai. Tất cả mọi thứ mà máy tính của bạn việc này rất rõ ràng. ĐƯỢC? Một sai lầm nhỏ của dấu chấm câu, và đột nhiên bạn không có được những gì bạn muốn. Được rồi. Vì vậy, hãy thu nhỏ trở lại một lần nữa. Chúng ta sẽ quay trở lại. Cũng làm cho rằng sửa chữa rất nhanh chóng. Chúng tôi sẽ đưa các dấu gạch chéo bên trong. Chúng tôi sẽ lưu nó. Chúng tôi sẽ thu nhỏ lại. Đối với một số lý do, đó là không được hạnh phúc, nhưng chúng ta hãy đi trước và chúng tôi sẽ quay trở lại để các thiết bị đầu cuối ở đây. Xóa nó lên. Chúng tôi sẽ phóng to. Và một lần nữa, chúng tôi sẽ làm cho thỏ. Và bây giờ chắc chắn rằng nó hoạt động. Hoan hô. ĐƯỢC. Vì vậy, hãy cố gắng thực hiện điều này nhiều hơn một chút chung. Hãy xem nếu thay vì chỉ in ấn một khung cụ thể, hãy xem liệu chúng ta có thể thực hiện điều này để chúng tôi có thể nhận được tất cả 10 của những khung hình hoạt hình mà chúng ta muốn có. Vì vậy, một lần nữa, chúng ta hãy này một bước tại một thời điểm. Hãy đầu tiên khái quát nó, không vì vậy mà tôi làm tất cả các khung hình, nhưng vì vậy tôi làm bất cứ một khung mà tôi có thể muốn. Vì vậy, sự khác biệt là những gì giữa khung? Là con thỏ giống nhau không? Đung thê. BRIAN SCASSELLATI: Yeah. Có gì khác biệt? Đung Position. BRIAN SCASSELLATI: Vị trí của nó, phải không? Và làm cách nào để kiểm soát vị trí của nó? Làm thế nào nhiều dấu chấm tôi đặt ở đầu và bao nhiêu chấm tôi đặt ở cuối. Vì vậy, tôi đã có năm tại bắt đầu và năm cuối cùng. Hãy thay thế mà năm với một vòng lặp for. ĐƯỢC. Và tôi sẽ tạo ra một đối loop bây giờ mà sẽ nói, Tôi sẽ in một số số các dấu chấm ở đầu. Tôi sẽ sử dụng một biến. Hãy nói rằng, làm thế nào về tôi như quầy trong vòng lặp của tôi. Và tôi sẽ phải khai báo nó lên hàng đầu. Và sau đó trong vòng lặp for Tôi cần phải làm ba việc. Điều đầu tiên tôi cần phải làm là tôi cần phải khởi tạo i. Tôi nên khởi gì nó bắt đầu được? 0. ĐƯỢC. Sau đó, tôi cần phải nói, những gì các điều kiện chấm dứt? Khi nào tôi nên dừng lại? Vâng bao nhiêu dấu chấm làm bạn muốn in trên một này? Đung Năm. BRIAN SCASSELLATI: Năm một lần nữa? Làm thế nào về chúng ta hãy làm điều gì đó khác nhau, chúng tôi đã làm năm. Hãy cho thấy nó khác nhau. SPEAKER 22: Hai. BRIAN SCASSELLATI: Hai. ĐƯỢC. Vì vậy, nếu tôi muốn hai chấm, những gì tôi nên đặt ở đây? Đung Ba. BRIAN SCASSELLATI: Ba. ĐƯỢC. Đã bao nhiêu lần là sẽ đi qua? Điều đó sẽ đi qua ba lần, 0, 1, 2, Right? Được rồi, chúng ta hãy quay trở lại xuống đến hai. Bây giờ chúng ta sẽ nhận được hai chấm. Và làm những gì tôi muốn làm mỗi thời gian tôi đi qua các vòng lặp? Điều gì đã thay đổi mỗi lần tôi đi qua? SPEAKER 23: Thêm một dấu chấm. BRIAN SCASSELLATI: Tôi phải tiếp tục đi. Tôi sẽ thêm một dấu chấm. Tôi sẽ in một dấu chấm, mỗi lần qua vòng lặp. Nhưng làm sao tôi theo dõi như thế nào nhiều lần tôi đã được thông qua các vòng lặp? Tôi đang sử dụng i, mà biến, truy cập đó. Vì vậy, mỗi lần qua, tôi sẽ để tăng truy cập bởi một. Bây giờ, đó là cùng một đối tôi nói i = i + 1. Vậy là được rồi. Tôi có thể làm điều đó that-- Tôi thích viết tắt, vì vậy tôi sẽ nói i ++. ĐƯỢC. Hãy làm điều tương tự xuống đây ở phía dưới. Chỉ có tôi loại đã làm một. Tôi sẽ để cho các bạn làm điều này một cách hoàn toàn. Được rồi. Vì vậy, những gì tôi nên viết ở đây? Dưới đây là của tôi cho vòng lặp. Tôi sẽ làm một printf () và tôi sẽ để làm cho nó để tôi chỉ in một dấu chấm ở phía dưới đó. Em nên viết gì bên này cho vòng lặp bây giờ? Vâng, đầu tiên của tất cả những gì biến tôi nên sử dụng? SPEAKER 24: j. BRIAN SCASSELLATI: Tôi có thể sử dụng j. Tôi có thể dùng cùng một tên? Tôi có thể sử dụng i một lần nữa? Yeah. Đó là OK, vì Is mà tôi đang sử dụng ở đây, Tôi không cần đến chúng nữa khi Tôi có được xuống đến thời điểm này. Vì vậy, những gì tôi nên khởi tạo i tới? SPEAKER 25: 10. BRIAN SCASSELLATI: 0. Tôi nên kiểm tra những gì? Làm thế nào nhiều dấu chấm làm tôi cần bây giờ ở cuối nếu tôi đã có hai chấm ngay từ đầu? Tôi cần tám ở cuối, vì vậy những gì Tôi nên kiểm tra, tôi ít than-- Đung Bảy, tám, chín. BRIAN SCASSELLATI: Tôi nghe nói bảy. Tôi nghe nói tám. Và tôi nghe chín. ĐƯỢC. Vì vậy, tất cả chúng ta ở bên phải ball-- Jason cho biết 10. ĐƯỢC. Nếu tôi cần hai chấm cho đầu tiên, có bao nhiêu làm I-- và tôi cần tám chấm cho cuối cùng one-- tôi đặt một hai lên trên, những gì tôi nên đặt xuống dưới? Đung Tám. BRIAN SCASSELLATI: Tám. Bởi vì đó là sẽ đếm số không thông qua bảy. Và đó là tám lần thông qua các vòng lặp. ĐƯỢC. Và những gì tôi phải làm ở cuối? Đung i ++. BRIAN SCASSELLATI: i ++. Được rồi. Vì vậy, đó là tìm kiếm khá tốt ở đó. Hãy thử nó và chúng ta hãy xem những gì nó. ĐƯỢC. Vì vậy, chúng ta sẽ lưu nó. Nice và lưu. Chúng tôi sẽ thu nhỏ trở lại. Chúng tôi sẽ cố gắng ở đây trong thiết bị đầu cuối. Chúng tôi sẽ phóng to. Rất tiếc. Chúng tôi sẽ, một lần nữa, làm cho chương trình của chúng tôi thỏ. Và đi trước và thực hiện bunny. Và có nó được. Vì vậy, có chú thỏ của chúng tôi. Trong trường hợp có hai chấm ở đầu và tám chấm ra ở cuối. Mọi người vẫn còn với tôi? ĐƯỢC. Vì vậy, chúng tôi xây dựng nó lên. Chúng tôi xây dựng một chú thỏ, một khung cụ thể. Bây giờ chúng ta đã có thể khái quát rằng để xây dựng hơn, các loại khác nhau của khung hình. Bây giờ chúng ta hãy đi trước, và có nó tạo ra không chỉ là một khung hình, nhưng chúng ta hãy tạo ra 10 khung hình, nơi mà chúng ta từ từ làm cho các chú thỏ di chuyển tất cả các cách trên lĩnh vực này. Được rồi. Hãy quay trở lại. Và chúng tôi sẽ cố gắng bây giờ. Vì vậy, những gì tôi thực sự cần phải thay đổi ở đây? Tôi cần làm gì để thay đổi? SPEAKER 26: Trước hết bạn cần thay đổi số lượng tối đa chấm lúc bắt đầu. Bởi vì nếu chúng ta đang làm 10 chấm, nó sẽ cần phải lên đến quy mô. BRIAN SCASSELLATI: Yeah. Vì vậy, ngay bây giờ tôi có nó loại Hardwired để luôn luôn làm hai chấm ở đầu và luôn luôn làm tám chấm ở cuối. Tôi muốn xây dựng một vòng lặp, phải không? Bởi vì tôi không muốn xây dựng chỉ là một hình ảnh chú thỏ, Tôi muốn xây dựng 10 hình ảnh chú thỏ. Vì vậy, tôi cần phải xây dựng một vòng lặp, và như tôi đi qua vòng lặp, Tôi muốn thay đổi bao nhiêu chấm tôi in ở đầu và bao nhiêu chấm tôi in ở cuối, trên cơ sở đó chu kỳ thông qua các vòng lặp Tôi đang ở. Được rồi. Vì vậy, hãy truy cập khác. Ai đó đang trước khi nói j, vì vậy chúng tôi sẽ làm j khác. Và bây giờ, chúng ta sẽ xây dựng một vòng lặp for. Những gì diễn ra bên trong vòng lặp? Công cụ này có đi bên trong vòng lặp, phải không? Liệu chú thỏ có để đi vào bên trong vòng lặp? Tôi có cần một chú thỏ trong mỗi người 10 khung hình? Đung Uh-huh. BRIAN SCASSELLATI: Yeah. Tôi muốn có một chú thỏ trong mỗi của 10 khung hình, phải không? Làm thế nào về các dấu chấm ở Cuối cùng, tôi cần điều đó? ĐƯỢC. Vì vậy, tôi sẽ thụt tất cả chúng. Tôi sẽ làm nổi bật tất cả này, và tôi sẽ nhấn Tab. Và điều đó sẽ đẩy họ trên tất cả một chút, để nó dễ dàng cho tôi để xem những gì trong các vòng lặp. Và sau đó tôi sẽ kết thúc nó. Hãy cùng nói nào. ĐƯỢC? Bây giờ, trong vòng lặp này Tôi building-- whoops, làm cho rằng, do đó bạn có thể see-- Tôi đã có phản j tôi. Tôi sẽ bắt đầu nó từ 0. Bao nhiêu lần tôi muốn đi qua vòng lặp này? Đung 10 lần. BRIAN SCASSELLATI: 10 lần. Vì vậy, tôi nên đặt những gì số ở đây? Đung 9, 10. BRIAN SCASSELLATI: 9, 10, ai đó đã nhận nói 11, phải không? Tôi muốn hai chấm trước và đưa tôi ít hơn 2. Tôi muốn tám chấm, Tôi đưa tôi ít hơn 8. Bây giờ tôi muốn đi qua 10 lần, vì vậy tôi đặt j ít than-- Đung 10. BRIAN SCASSELLATI: 10. Hiện chúng tôi đi. Và tôi phải làm gì vào cuối để j? ++, Tăng nó. ĐƯỢC. Bây giờ, đây là một phần khó khăn, những gì sẽ xảy ra ngay bây giờ nếu tôi làm điều này? Tôi sẽ in 10 khung hình? SPEAKER 27: Tôi nghĩ tất cả họ sẽ được như vậy. BRIAN SCASSELLATI: Họ sẽ thấy tất cả là như nhau, phải không? Bởi vì tất cả chúng vẫn đang đi để đặt hai dấu chấm ở đầu. Nhưng tôi không muốn tất cả chúng để có hai chấm đầu. Làm thế nào nhiều dấu chấm làm tôi muốn ngay từ đầu? Đung Thay đổi. BRIAN SCASSELLATI: Tôi muốn nó thay đổi, phải không? Vì vậy, tôi có những gì ở đây đó đang thay đổi mỗi lần vòng lặp đi qua? Đung Số dấu chấm, j. BRIAN SCASSELLATI: j, số lượng các dấu chấm. Vì vậy, tôi có thể thay đổi điều này để có j. Lần đầu tiên thông qua các vòng lặp, có chuyện gì mà có được? Để tôi thiết gì j đến lúc đầu? Đung 0. BRIAN SCASSELLATI: Vậy làm thế nào nhiều lần nào tôi sẽ làm điều này? 0. Lần thứ hai thông qua các vòng lặp, j sẽ là 1 vì tôi tăng nó. Làm thế nào nhiều dấu chấm tôi sẽ in? 1. Lần thứ ba thông qua các vòng lặp, có bao nhiêu chấm tôi sẽ in? Đung Ba. BRIAN SCASSELLATI: j là có được 3. Làm thế nào nhiều dấu chấm tôi sẽ in? Oh, xin lỗi, j sẽ là 2. Làm thế nào nhiều dấu chấm tôi sẽ in? Đung 2. BRIAN SCASSELLATI: 2. OK, vì vậy tôi sẽ tiếp tục incrementing rằng khi chúng ta đi. Làm thế nào về xuống dưới? Những gì đi xuống đây? Tôi không muốn 8 luôn ở cuối nữa? SPEAKER 28: 10. BRIAN SCASSELLATI: Tôi muốn 10 chấm? Tôi muốn nó thay đổi, quá. Vì vậy, làm thế nào tôi muốn nó thay đổi? Đung [không nghe được]. BRIAN SCASSELLATI: Vâng, nếu tôi có năm dấu chấm ở đầu, bao nhiêu dấu chấm của tôi có được ở cuối? Đung Năm. BRIAN SCASSELLATI: Nếu tôi có sáu chấm ở đầu, bao nhiêu để tôi nhận được ở cuối? Đung Four. BRIAN SCASSELLATI: Nếu tôi nhận bảy dấu chấm ở đầu, bao nhiêu để tôi nhận được ở cuối? Đung Ba. BRIAN SCASSELLATI: Nếu tôi đã đã chấm j ở đầu, bao nhiêu để tôi nhận được ở cuối? 10-j. ĐƯỢC. Vì vậy, hãy cố gắng mà ra. Vì vậy, tôi sẽ lưu chương trình chú thỏ của chúng tôi. Một lần nữa chúng tôi sẽ thu nhỏ. Chúng tôi sẽ đi xuống để thiết bị đầu cuối của chúng tôi. Chúng tôi sẽ xóa nó. Và phóng to. Chúng tôi sẽ làm cho chương trình của chúng tôi thỏ, một lần nữa. Và chúng ta sẽ thực hiện nó. Uh-oh. Giữ trên, chúng ta hãy phóng to ra. Tôi đã nhận được 10 khung hình? Vâng, có bao nhiêu con thỏ tôi thấy ở đó? 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Tôi có 10 khung hình. Có phải tất cả họ đều giống nhau không? Đung Yeah. Không. BRIAN SCASSELLATI: No. Đó là một đầu tiên, bunny là xa bên trái. Và ở đây, con thỏ là xa trên SPEAKER 29: Đúng vậy. BRIAN SCASSELLATI: Vì vậy, Tôi đã quên những gì để làm gì? SPEAKER 30: Bắt đầu một dòng mới. BRIAN SCASSELLATI: Tôi quên để bắt đầu một dòng mới, một lần nữa. Cùng một sai lầm tôi đã thực hiện trước đây. Được rồi, chúng ta hãy đi sửa chữa đó. Bây giờ, tôi vẫn còn có mã trong đó để tạo ra một dòng mới. Tại sao nó không làm việc? SPEAKER 31: Nó không phải bên trong vòng lặp. BRIAN SCASSELLATI: Oh, nó không phải bên trong vòng lặp. Đúng thế. Nó ngồi ngoài ở đây. Và cho vòng lặp là tất cả mọi thứ đó là bên trong văn bản đó. Vì vậy, tôi sẽ di chuyển bên này cho vòng lặp. Và tôi sẽ Tab ở phía trước của nó để cho thấy rằng nó ở đúng nơi. Và bây giờ, chúng tôi sẽ lưu nó lại. Chúng tôi sẽ phóng to ra. Chúng tôi sẽ chuyển sang thiết bị đầu cuối của chúng tôi. Phóng to. Chúng tôi sẽ làm lại chương trình chú thỏ của chúng tôi. Và bây giờ, bây giờ chúng tôi đã có 10 khung hình của chúng tôi. [Vỗ tay] BRIAN SCASSELLATI: OK. So. Dưới đây là lồng của chúng tôi cho các vòng. Chúng tôi đã có thể tạo ra trong vòng lặp bên trong có bao nhiêu chấm tôi muốn in ở đầu, ở cuối. Và các vòng ngoài kiểm soát bao nhiêu khung hình tôi đã xây dựng. Chúng tôi bắt đầu với một chút hạt nhân của vấn đề, và chúng tôi được xây dựng từ điểm đó. Được rồi. Hãy làm thêm một bước nữa. Bạn sẵn sàng chưa? Có một điều ở đây, nơi chúng tôi đã thực sự loại có nhiều phức tạp hơn chúng ta cần. Hãy nhìn xem. Vì vậy, trong chương trình của chúng tôi thỏ, nếu tôi phóng to ra ở đây, Tôi thực sự làm một số của cùng một điều hơn và hơn nữa. Tôi phải làm gì đó là loại điều tương tự lặp đi lặp lại hai lần? SPEAKER 32: In các dấu chấm. BRIAN SCASSELLATI: Yeah Tôi in những dấu chấm hai lần. Thực sự, tôi cần phải có nhận xét này xuống đây. Tôi in một số dấu chấm ở bắt đầu, phải lên đây. Và sau đó tôi in một số dấu chấm ở cuối. Và tôi làm loại chính xác những điều tương tự. Những gì chúng ta sẽ bắt đầu làm việc trên trong vài tuần tới là việc có thể để có những khối mã mà chúng tôi sử dụng hơn và hơn nữa, và thông qua một quá trình gọi là trừu tượng, chúng ta sẽ kéo chúng ra và viết cho họ một lần để chúng tôi có thể sau đó tái sử dụng chúng hơn và hơn nữa. Vì vậy, hãy cố gắng đó. Sẵn sàng chưa? Chúng tôi đang đi để lấy khối mã này. Và tôi sẽ đưa nó ra khỏi đó. Và tôi sẽ define-- xuống phía dưới, Tôi sẽ viết một chức năng mới. Nó sẽ không trả lại gì cả. Và tôi sẽ gọi nó là printDots. Nó sẽ mất một lập luận, một số nguyên nói howManyDots tôi nên in. Và bây giờ, thay vì in chấm j, tôi sẽ in cho howManyDots tôi nên in. Và có một vấn đề nhỏ ở đây. Bất kỳ ai biết nó là gì? Tôi phải làm gì đó là liệt kê ở đây mà không được định nghĩa? Đung [Không nghe thấy] BRIAN SCASSELLATI: Vâng như thế nào nhiều dấu chấm được xác định ngay lập ở đây, nhưng tôi đang sử dụng là biến i. Vì vậy, tôi sẽ mất biến i và tôi sẽ phải định nghĩa nó xuống ở đây thay thế. Vì vậy, bây giờ nó sẽ stay-- oops, bị mũ khóa trên somehow-- tôi sẽ giữ cho tôi xuống ở đây. Vì vậy, bây giờ đây là chức năng nhỏ của tôi hoặc tiểu thường xuyên, và nó nói, có bao nhiêu chấm tôi sẽ in? Và nó sẽ đi qua vòng lặp này và in chúng hơn và hơn nữa. Sau đó tôi có thể sửa đổi chương trình của tôi lên đây. Và những gì đã làm tôi gọi là chức năng? printDots. Vì vậy, tôi sẽ gọi printDots. Làm thế nào nhiều dấu chấm làm tôi muốn in lần đầu tiên trước khi các chú thỏ? Đung j. BRIAN SCASSELLATI: j. Làm thế nào nhiều dấu chấm làm tôi muốn in ở cuối, sau khi thỏ? 10-j. Và có một điều tôi đang thiếu. Như bạn đã thấy trong bài giảng hôm nay, chúng ta sẽ khai báo printDots lên trên để cung cấp cho các mẫu thử nghiệm. ĐƯỢC. Vì vậy, những gì tôi đã làm là tôi đã cố gắng để cô lập mà phần tái sử dụng mã mà tôi đã thực hiện hơn và hơn nữa. Và tôi đã cố gắng để kéo nó ra để tất cả được chứa trong một nơi. Bằng cách đó, nếu tôi có một sai lầm ở đâu đó, Tôi chỉ phải sửa chữa nó ở một chỗ. Được rồi. Vì vậy, hãy lưu nó. Và hãy chắc chắn rằng nó hoạt động. Vì vậy, chúng ta hãy đi ra ngoài. Chúng tôi sẽ đi một lần nữa để thiết bị đầu cuối của chúng tôi. Chúng tôi sẽ phóng to. Chúng tôi sẽ làm cho quá trình thỏ. Oh. Và nó cho tôi một lời cảnh báo. Nó được nói gì với tôi? Tốt trong bất kỳ của những Đôi khi, bạn luôn mong muốn để di chuyển lên đến error-- đầu tiên bây giờ thế này, tôi chỉ có một. Nó nói với tôi trong bunny.c, trên đường 8, cột 9, có một vấn đề. Nó nói, bạn đã khai báo này i biến và bạn đã không sử dụng nó. Bây giờ bình thường, đó là không phải là lỗi tồi tệ nhất. Đó là một điều dễ dàng để sửa chữa. Và trên thực tế, chúng ta có thể quay trở lại trong. Chúng tôi có thể quay trở lại để bunny. Và trong trường hợp này, tất cả chúng ta phải làm là thoát khỏi tôi, bởi vì chúng ta không sử dụng i trong chính nữa. Chúng tôi chỉ sử dụng nó trong tiểu thường xuyên của chúng tôi. Vì vậy, hãy lưu lại đó. Chúng ta sẽ quay trở lại. Và phóng to. Chúng tôi sẽ một lần nữa làm cho thỏ. Và có một lần nữa là 10 khung hình của chúng tôi. ĐƯỢC. Bất cứ lúc nào bạn đang đưa ra một procedure-- Yeah. SPEAKER 33: Tôi có a-- Tôi đang bối rối. Bạn có thể quay trở lại các mã? BRIAN SCASSELLATI: Yep. SPEAKER 33: Vì vậy, khi bạn đã viết Nguyên mẫu của bạn, các đối số bạn đã đặt tên nó được gọi là howmany? Nhưng, below-- BRIAN SCASSELLATI: Oh yeah. SPEAKER 33: --called họ một cái gì đó khác nhau, tôi không hiểu. BRIAN SCASSELLATI: Tại sao là họ khác nhau. Vì vậy, đó là một câu hỏi lớn. Vì vậy, câu hỏi là, tăng ở đây, tôi đã viết howmany, và xuống dưới, tôi đã viết howManyDots. Lý do là trong nguyên mẫu của bạn, nó thực sự không chú ý để các tên mà bạn đang đặt trong. Tất cả thực sự quan tâm đến là nó là một số nguyên. Nó muốn biết hình thức về những gì bạn đang đặt trong. Bây giờ stylistically-- oops-- những gì tôi cần làm, là tôi muốn làm cho các trận đấu. ĐƯỢC. Vì đó sẽ được giữ nó dễ dàng hơn cho tôi để nhớ. Nhưng đó là sai lầm của tôi Yeah. SPEAKER 34: Và như vậy cho mẫu thử nghiệm để làm việc, chỉ viết dòng đó, văn bản nguyên mẫu, cho phép chức năng đó mà đến ngay bên dưới nó để đi đến cùng và lấy những gì có nghĩa là? BRIAN SCASSELLATI: Những gì nó có nghĩa là là khi biên dịch đi qua, nó đi từ đầu mã của bạn để phía dưới. Và những gì nguyên mẫu này là, là nó về cơ bản là một lời hứa. Nó nói, có đi được một chức năng xác định một nơi nào đó. Nó sẽ được gọi là printDots. Và nó sẽ mất một đối số đó sẽ là một số nguyên và nó sẽ quay trở lại không có gì, kiểu void. ĐƯỢC. Tôi hứa với bạn nó sẽ là xác định đâu đó xuống đường. Nhưng bất cứ lúc nào bạn nhìn thấy rằng, khi bạn đi xuống thông qua phần còn lại của tôi chức năng chính, tôi muốn bạn coi đó như một chức năng mà phải mất một đầu vào số nguyên. Và do đó, khi biên dịch đi xuống thông qua điều này, nó thấy lời hứa đó. Và khi nó được xuống, giữ đi, tiếp tục đi, nó tìm thấy lần đầu tiên printDots được đề cập. Và nó nói, Oh, bạn đang đem lại tôi k này. j là một số nguyên. Vâng, bạn hứa với tôi rằng sẽ là một số nguyên và đó là đúng. Vậy là được rồi. Và cuối cùng, xuống ở đáy, trước khi tôi nhận được đến cuối của tôi tập tin, tôi thực hiện tốt lời hứa của tôi và tôi xác định nó. ĐƯỢC? SPEAKER 35: Vì vậy, nó saves-- sự Chương trình sẽ tiết kiệm không gian trống mà nó đi lại và lấp đầy ở cuối? BRIAN SCASSELLATI: Nó không về cấp phát bộ nhớ. Nó thực sự chỉ là những gì loại là bạn mong đợi để xem. Nên điều này có một lập luận, hoặc năm đối số? Nên có nó là số nguyên dành cho nó, hoặc các chuỗi? Đó là tất cả nó đang tìm kiếm làm là để kiểm tra, bạn đang đem lại cho tôi sự đúng loại của các đối số. ĐƯỢC? Được rồi. Hãy cho tôi để lại cho bạn một chút khác để xem xét. ASCII nghệ thuật không phải là mô hình tuyệt vời hoạt hình như ngày nay. Nhưng một số người tất nhiên có những điều và họ đẩy nó đến cực đoan của họ. Đây là, như David đã chứng minh trong bài giảng, một đoạn mã là bạn nên dùng trong mọi trường hợp cố gắng lặp lại chính mình. Bởi vì nó là khủng khiếp về phong cách. Trong thực tế, nó được thiết kế để được như khó khăn nhất có thể để đọc. ĐƯỢC. Vì vậy, để làm một lần nữa, chúng ta hãy phóng to ở đây. Tôi sẽ đi ngay bây giờ, thay đổi thư mục. Tôi sẽ đi lên một mức, trở lại không gian làm việc của tôi. Sau đó tôi sẽ thay đổi thư mục vào trong này thư mục khác mà tôi đã tạo ra. Và đây là International Obfuscated C Programming Contest. Phương tiện làm rắc rối như cứng càng tốt để hiểu. Vì vậy, xin vui lòng, không được sợ hãi nếu bạn nhìn lúc này và đi, tôi không thể đọc được mà. Đó là điểm của nó. ĐƯỢC? Nhưng, chúng tôi có điều này chương trình tuyệt vời mà tôi sẽ xem xét bởi chỉ cần gõ nhiều hơn. Và chúng ta hãy xem nếu tôi có thể thu nhỏ chỉ một chút, do đó bạn có thể nhìn thấy nó Và đây là chương trình. Nó được đặt tên endo.c. Và có vẻ như xô này với loại của các chữ cái F-L-U-I-D trong đó. Đây thực sự là một chương trình. Nó được viết bằng những mơ hồ nhất cách mà các tác giả có thể có thể viết nó. Nhưng đó là một mảnh nhỏ tuyệt vời mà tạo ra một mô hình động lực học chất lỏng. Và vì vậy chúng tôi sẽ cung cấp cho rằng mô hình một đầu vào trông như thế này, trong một staired đặt container với một số chất lỏng, một số lỏng, tăng ở đầu trang. Và chúng tôi sẽ có nó mô phỏng những gì đang xảy ra với nó. Vì vậy, tôi sẽ gọi hàm này, endo. Và tôi sẽ cho nó mà tập tin đầu vào mà tôi đã có. Và có hình ảnh thu nhỏ của chúng ta về nghệ thuật ASCII. Một mô phỏng động lực chất lỏng đầy đủ chạy chỉ trong vài dòng mã. Bây giờ những gì thực sự thực sự tuyệt vời về chương trình này ít là tôi muốn dừng lại ngay bây giờ, do đó, tôi sẽ sử dụng lệnh: Đung Control-C. BRIAN SCASSELLATI: Control-C. ĐƯỢC. Vì vậy, tôi sẽ sử dụng Control-C. C Điều đó sẽ ngăn chặn nó. Tôi sẽ xóa lần nữa. Và bây giờ tôi sẽ để gọi chương trình, thực hiện các chương trình, sử dụng chính nó như là đầu vào. Và chúng ta sẽ thấy các động lực chất lỏng mô phỏng của nó tan chảy. ĐƯỢC. Xin đừng để cho chương trình đó là điều gây bối rối cho bạn. Nó chỉ là để chúng tôi có thể kết thúc vào ngày một cái gì đó mát mẻ và thú vị. ĐƯỢC. Tốt nhất của may mắn với bộ vấn đề của bạn. Chúng tôi sẽ được hạnh phúc để trả lời câu hỏi sau giờ học. Cảm ơn nhiều, guys.