Jason Hirschhorn: Chào mừng bạn đến CS50 phần, tất cả mọi người. Tôi tên là Jason Hirschhorn. Tôi là một người rất nhiều TF của bạn, nhưng rất nhiều người hy vọng sẽ được tham gia với chúng tôi trực tuyến, sinh viên mở rộng hoặc sinh viên cố gắng xem xét thông qua phần nếu họ bỏ qua phần của họ trong tuần đó hoặc chỉ bắt kịp nếu họ muốn xem xét một số tài liệu. Như vậy, theo các giáo trình, mà tất cả các bạn đã đọc, có đúng không? Tôi nhìn thấy rất nhiều gật đầu. Phần cung cấp cho bạn cơ hội khám phá của khóa học vật liệu trong một môi trường thân mật hơn, cũng như đi sâu vào thực hành các hoạt động. Vì vậy, đó là cơ bản những gì chúng tôi sẽ được thực hiện mỗi tuần. Chúng ta sẽ đi qua những gì chúng ta có xác định là quan trọng nhất chủ đề trong bài giảng, và những cái có lẽ cũng hữu ích nhất và nhiều khả năng để đi lên trên bộ vấn đề và trong câu đố, và trong mã hóa của bạn cuộc sống bên ngoài của CS50. Vì vậy, chúng ta sẽ đi vào những chủ đề, thảo luận, đi qua chúng, trả lời bất kỳ câu hỏi các bạn có, và sau đó chúng ta sẽ làm được rất nhiều vấn đề thực hành trong mã hóa. Tất cả các bạn mang máy tính xách tay, mà là tuyệt vời. Đây là một lớp khoa học máy tính. Tuy nhiên, rất nhiều các bài tập chúng tôi, bạn sẽ không cần máy tính xách tay của bạn cho. Bạn có thể làm cho họ trên một tờ giấy. Đó là cách bạn sẽ làm cho họ trên các câu đố. Và quả thật, đó là một cách tuyệt vời để thực sự biết rằng bạn làm thế nào để một cái gì đó nếu bạn không có kiểm tra 50 dựa trên hoặc Hãy để dựa vào, nói bạn đã thực hiện bất kỳ lỗi nào. Vì vậy, bạn đang chào đón để mã trên thiết bị hoặc run.cs50.net, đó là một công cụ cho phép bạn mã trực tuyến, nhưng tôi cũng muốn giới thiệu, nếu bạn đã không thử nó, sử dụng một bảng giấy và cố gắng thực hành những vấn đề trên một tờ giấy. Bởi vì một lần nữa, đó là cuối cùng những gì bạn sẽ được yêu cầu làm bài kiểm tra trên. Vì vậy, chúng ta hãy bắt đầu với chúng tôi chương trình nghị sự cho ngày hôm nay. Chúng ta sẽ đi qua một số chỉ tiêu cho phần của chúng tôi, sau đó chúng ta sẽ đi sâu vào mảng, chức năng, và dòng lệnh đối số, đó là những gì các bạn đã bao phủ trong tuần qua trong bài giảng và sau đó thứ hai, và những gì bạn sẽ bao gồm hơn trong tương lai. Và cuối cùng, chúng ta sẽ để nói về pset2. Nếu tôi có thể có được một giơ tay nếu bạn đã không nhìn vào các vấn đề thiết lập hai đặc điểm kỹ thuật. Chúng tôi sẽ nói tất cả mọi người. Tuyệt vời. Chúng tôi sẽ nói về bài tập trong một chút, nhưng nếu bạn đọc những bộ vấn đề đặc điểm kỹ thuật, đó là tất cả các bạn cần phải làm. Nếu bạn đọc trước khi bạn đến lớp và phần thứ ba, bạn sẽ là một vị trí tuyệt vời. Chúng ta có thể đi qua các thiết lập vấn đề, đó là những gì chúng ta sẽ làm ở cuối. Chúng ta sẽ đi qua logic, đảm bảo tất cả mọi người là trên cùng một trang. Tôi muốn các bạn có thể để lại thứ ba cảm thấy rất thoải mái với những gì bạn cần làm cho bộ vấn đề của tuần này, và nếu bạn không, tôi sẽ hạnh phúc ở lại sau và làm việc với bạn. Nhưng đó là một điều mà bạn phải làm nhưng tôi nghĩ rằng sẽ thực sự thông minh, chỉ để đọc tập vấn đề đặc điểm kỹ thuật của lớp ngày Thứ ba, mà nó có vẻ giống như một rất nhiều các bạn đã làm. Tôi sẽ bắt đầu với một chương trình nghị sự mỗi lớp vì vậy bạn có biết chúng ta đang đi. Điều này cũng hữu ích cho những người xem trực tuyến bởi vì mỗi phần được mã màu sắc, vì vậy nếu bạn muốn đến trở lại và chỉ xem 10 phút thay hơn thế toàn bộ phần 90 phút, bạn chỉ có thể đi với màu sắc phần mã và nhìn vào phần đó. Vì vậy, tôi đã cố gắng để phá vỡ chúng thành đẹp mô-đun mà sẽ cho phép bạn - nếu bạn muốn quay trở lại và xem xét, hoặc sinh viên khác, những người chỉ xem một phần để xem xét - để tìm thấy những điều cụ thể mà họ muốn chú ý đến và tìm hiểu thêm về. Ngọt ngào. Định mức. Tôi là một nhà lãnh đạo FOP trong khuôn viên trường. Tôi không biết nếu ai đã làm FOP. Có ai làm FOP? Một người đã làm FOP. Hai người đã làm FOP. Tuyệt vời. Vì vậy, FOP là năm đầu tiên ngoài trời Chương trình định hướng. Chúng tôi có tân sinh viên vào rừng và thực hiện những kinh nghiệm huyền diệu nhất của cuộc sống của họ, đúng không? Vâng. Âm thanh về bên phải. Vì vậy, tôi chỉ muốn bắt đầu của chúng tôi đầu tiên phần bằng cách thảo luận một số định mức cho các lớp học và mối quan hệ của chúng tôi vì tôi nghĩ rằng họ là rất quan trọng. Trước hết, như những người bạn của người là phần của tôi đã nhận được và đã được thảo luận trong đó email, tôi yêu này. Đây là một phần yêu thích của tôi trong năm. Tôi đã rất vui mừng. Tôi đã ở đây hàng giờ đồng hồ ngày hôm nay. Tôi đã không để lại tòa nhà này ngoại trừ việc đi ăn vì tôi yêu CS50 phần, tôi yêu giảng dạy, tôi thích làm việc với các bạn. Một trong những ưu tiên cao nhất của tôi, nếu không tôi ưu tiên số một, không chỉ cho lớp này bao gồm nhưng khác của tôi các lớp học và extracurriculars, là hỗ trợ các bạn, và giúp đỡ các bạn, và làm hết sức mình để đảm bảo rằng bạn kẻ có một tuyệt vời, vui vẻ, sản xuất, hấp dẫn, thú vị kinh nghiệm trong lớp học này. Đó là những gì tôi đang cam kết. Đó là lý do tại sao tôi yêu để làm điều này. Đó là một điều tôi số, hỗ trợ các bạn. Nếu bạn có thắc mắc về bài giảng, bộ vấn đề, phần, cuộc sống, ngay cả khi bạn muốn nói về cuộc sống, xin vui lòng để tiếp cận. Bạn có số điện thoại di động của tôi, bạn có email của tôi địa chỉ, bạn có Gchat của tôi. Bạn có thể liên hệ với tôi tại bất kỳ hoặc tất cả các những người bất cứ khi nào, nhưng có thể sẽ không nhận được một phản ứng bất cứ khi nào. Tôi cố gắng và nhận được trở lại trong vòng 24 giờ. Thông thường nó sẽ nằm trong 20 phút hoặc 24 phút. Tôi có nên nói rằng để làm cho nó song song. Nhưng bạn sẽ nhận được một phản ứng khá nhanh chóng. Nếu bạn nhắn tin cho tôi một giờ trước khi bộ vấn đề là do, tôi sẽ bình tĩnh bạn xuống và làm các bài tập thở sâu với bạn, nhưng nếu bạn chưa bắt đầu, bạn có thể sẽ không hoàn thành, và Tôi có thể không thực sự giúp bạn có mặc dù tôi sẽ cố gắng tốt nhất của tôi. Vì vậy, tôi sẽ làm tất cả mọi thứ Tôi có thể hỗ trợ bạn. Xin vui lòng để tiếp cận với liệu đó là trong phần một lần nữa, tại Thời gian làm việc nếu bạn nhìn thấy tôi, hoặc thậm chí bên ngoài. Tôi đang hạnh phúc để thiết lập một thời gian để đáp ứng và làm việc thông qua các vấn đề có hoặc đi qua vật chất. Vì vậy, đó là số một, hỗ trợ. Tôi sẽ làm tất cả mọi thứ tôi có thể hỗ trợ bạn. Số hai, cuộc họp ở giữa. Nhiều như tôi muốn có, tôi không toàn năng hay toàn năng hoặc biết tất cả, vì vậy tôi không biết tất cả các thời gian nếu những gì tôi đang làm là nhận được trên, nếu theo cách tôi đang giảng dạy chủ đề sẽ giúp bạn tìm hiểu nó, hoặc nếu bạn đang bối rối về một chủ đề nhưng không nâng cao tay của bạn hoặc yêu cầu tôi hoặc gửi cho tôi một email. Hoặc thậm chí nếu bạn, một lần nữa, đang bối rối về một cái gì đó trên bộ vấn đề. Nếu bạn không tiếp cận với tôi, Tôi không thể biết rằng chắc chắn. Tôi sẽ làm hết sức mình để kiểm tra trên các bạn, hãy chắc chắn rằng tất cả mọi thứ tiến triển tốt, cố gắng dạy những điều một cách đó sẽ có lợi cho hầu hết phong cách học tập của bạn, nhưng nếu có bất cứ điều gì tôi có thể làm, cho tôi biết. Theo hướng này, nếu bạn muốn giúp đỡ với bộ vấn đề, tôi hơn hạnh phúc hơn để giúp bạn với bộ vấn đề. Chúng ta sẽ làm được rất nhiều rằng đối với thứ hai một nửa của phần này. Nhưng nếu bạn đã không đọc những vấn đề đặt ra trở lại và đã không xem đi bộ thông qua và đã không xem những phim ngắn và hy vọng tôi để dạy cho bạn tất cả mọi thứ đã được ghi hình hoặc trực tuyến mà bạn có thể tìm thấy ở CS50 nghiên cứu, đó là không thực sự công bằng để tôi hay các đồng nghiệp khác của bạn. Vì vậy, xin vui lòng, tôi đang hạnh phúc hơn để giúp bạn, nhưng các bạn đã gặp tôi trong giữa. Chúng tôi đã tấn các nguồn lực cho bạn có sẵn trên CS50. Tôi đã đề cập một số người trong số họ. Hãy tận dụng lợi thế của họ. Nếu bạn đang bối rối, tôi đang hạnh phúc hơn để giúp bạn giải thích cho họ trong một cách khác, nhưng thật không công bằng nếu sinh viên hiện tại giờ làm việc, đã không bắt đầu bất cứ điều gì, và nó Thứ năm đêm và họ đang mong đợi TF đi bộ chúng thông qua mỗi đơn điều cho vấn đề thiết lập do vào buổi trưa ngày hôm sau. Có ý nghĩa? Một lần nữa, xin vui lòng gặp chúng tôi ở giữa. Và cuối cùng, kỳ vọng cao. Tôi sẽ được chấm điểm tất cả mọi người là trong phần của tôi, hay chấm điểm của bạn bộ vấn đề. Bạn đã không quay trở lại vấn đề thiết lập không hoặc một được nêu ra. Chúng tôi xin lỗi về điều đó. Chúng tôi đã mất một thời gian để cuối cùng giải quyết phần, và bây giờ chúng ta có thể bắt đầu phân loại. Tôi sẽ lấy lại cho bạn càng sớm càng tốt. Đó là một số của tôi advisees ra khỏi đó. Tôi sẽ lấy lại cho bạn càng sớm càng tốt. Và vấn đề thiết lập hai, chúng ta sẽ ở lịch và chúng tôi sẽ bắt đầu nhận được chúng cho bạn khá nhanh chóng sau khi bạn bật chúng in Khi bạn nhận được vấn đề của bạn thiết lập trở lại, bạn sẽ có được điểm số, mà bạn biết đọc các giáo trình - chính xác, thiết kế, phạm vi và phong cách điểm số. Bạn cũng sẽ nhận được ý kiến. Các ý kiến ​​quan trọng hơn hơn điểm số. Tôi nghĩ rằng nó an toàn để nói rằng. Điểm chỉ là một số từ một đến năm. Thật khó để đọc vào những người. Thật khó để cải thiện từ những người. Nhưng các ý kiến ​​sẽ chỉ ra cụ thể những điều bạn đã làm tốt hoặc các khu vực bạn có thể cải thiện và cung cấp cho bạn một số ý tưởng cho tương lai hoặc thay thế cách làm việc. Vì vậy, xin vui lòng, xin vui lòng, xin vui lòng đọc thông qua các ý kiến. Tôi đặt rất nhiều thời gian vào những ý kiến. Xin vui lòng đọc qua và không chỉ di chuyển xuống phía dưới cùng của PDF, tìm kiếm điểm số của bạn, hoặc đi trực tuyến và tìm thấy điểm số của bạn, và sau đó bỏ qua các ý kiến. Đó không phải là cách bạn sẽ tốt hơn. Đó không phải là cách bạn sẽ tăng điểm cuối cùng của bạn, chỉ cần bằng cách nhìn vào điểm số. Hãy nhìn vào những ý kiến. Và theo hướng kỳ vọng cao, một lần nữa, như tôi đã nói, bạn có thể ghi bàn từ một đến năm. Twos, chia thành ba, và bốn chân là Phần lớn các điểm bạn sẽ nhận được. Những người thân và đập tay là cả hai thực sự hiếm. Luôn luôn có những điều chúng ta có thể làm tốt hơn. Bất cứ khi nào tôi mã một chương trình, có luôn luôn một cái gì đó tôi đã có thể làm tốt hơn. Vì vậy, thay vì nói rằng bạn có được một năm tất cả các thời gian trên tất cả mọi thứ và làm tất cả mọi thứ hoàn hảo, tôi không nghĩ rằng bất kỳ chúng ta thực sự tin rằng chúng ta - hoặc hy vọng, chúng ta không làm tất cả mọi thứ hoàn thiện tất cả các thời gian. Do đó, không phải lo lắng nếu bạn đã không nhận được một năm. Một năm không có bản đồ vào một một, bốn không có bản đồ vào một B, một ba không không bản đồ vào một C. Đó là không cách điểm làm việc. Như David đã nói nhiều lần, tại cuối học kỳ của tất cả các điểm số của bạn và đầu vào từ tôi, TF của bạn, đến với nhau và xác định một lớp cuối cùng cho bạn. Nhưng một lần nữa, nó không phải là năm, A, bốn, B, vân vân. Vì vậy, tôi sẽ có những kỳ vọng cao cho các bạn. Tôi sẽ mong đợi vấn đề tốt bộ và tôi sẽ cung cấp cho bạn thông tin phản hồi như vậy. Và nó sẽ không có nghĩa là bạn sẽ nhận được một lớp tồi tệ hơn. Bạn đang phân loại về tiến bộ của bạn từ tuần bằng không đến cuối khóa học của. Và cuối cùng, về cao mong đợi trong lớp, tôi yêu khi người tham gia. Tôi hiểu một số người cảm thấy nhiều hơn hoặc ít thoải mái tham gia. Những người khác đang tham gia không bằng cách nâng cao tay của họ và nói tất cả các thời gian. Nhưng chúng tôi trong lớp này sẽ được làm rất nhiều vấn đề nhỏ, rất nhiều câu hỏi nhỏ, và sau đó một số lớn hơn mã hóa vấn đề. Vì vậy, chắc chắn việc các bài tập ra khi chúng ta làm cho họ trên máy tính của bạn hoặc trên một tờ giấy. Nhưng tôi cũng sẽ cung cấp cho bạn một số thời gian trước khi ai bao giờ phải trả lời một số trong những câu hỏi tôi hỏi. Vì vậy, bởi vì tôi sẽ cung cấp cho bạn một thời gian để suy nghĩ về nó, bởi vì chúng ta sẽ để làm những việc trong các đối tác đôi khi, Tôi sẽ mong đợi tất cả mọi người để được tham gia phần nào. Và vì thiếu một thuật ngữ tốt hơn, có có thể sẽ được gọi điện lạnh, mà là nơi mà tất cả mọi người sẽ có cơ hội để suy nghĩ về câu trả lời, và sau đó Tôi sẽ kêu gọi các bạn, và sau đó bạn sẽ nói câu trả lời. Đừng lo lắng hay sợ hãi về điều đó. Tôi đã thực hiện nó trong quá khứ và chúng tôi đã tìm thấy rằng nó nhiều hơn nữa thành công, cũng đọc nghiên cứu giáo dục vào nó để xác định có hay không nó là một chiến thuật tốt. Nó rất hữu ích, đặc biệt là nếu bạn cho học sinh thời gian để suy nghĩ về câu trả lời và không làm cho họ chỉ đến ra và nói nó phải off the bat. Nhưng nếu bạn không cảm thấy thoải mái trả lời, tôi cũng khá tốt cảm biến mà ra, và chúng tôi sẽ không đặt bạn vào vị trí, đặc biệt là trên máy ảnh, mặc dù không ai trong số bạn đang ở trên máy ảnh ngay bây giờ. Vì vậy, đó là những tiêu chuẩn tôi có. Một điều nữa dọc theo dòng đáp ứng ở giữa. Tôi sẽ cho các bạn rất nhiều thông tin phản hồi. Xin vui lòng cho tôi thông tin phản hồi là tốt. Có một trang web, sayat.me/cs50. Vì vậy, nó là một phản hồi trung thực. Nếu bạn muốn cung cấp cho nó trong phần, Tôi nhận được một email bất cứ khi nào nó sẽ xảy ra. Chúng tôi sẽ nghỉ ngơi một chút, vì vậy tôi sẽ xem xét thông qua các thông tin phản hồi sau đó. Nếu bạn có bất kỳ thông tin phản hồi, xin vui lòng cung cấp cho nó để tôi có. Nếu bạn cung cấp cho tôi thông tin phản hồi trên Q, đó là tuyệt vời, nhưng đó là hướng dẫn mà bạn làm ở cuối. Nhưng điều đó sẽ được vào cuối học kỳ để Tôi sẽ không thể để có được điều đó thông tin phản hồi và biến nó thành giảng dạy các bạn tốt hơn. Vì vậy, xin vui lòng, nếu bạn có bất kỳ thông tin phản hồi, đưa nó cho tôi. Tôi yêu phản hồi. Sao để FOP, chúng tôi nhận được phản hồi tất cả các thời gian. Bạn có thể cho tôi mặt được, những điều tốt đẹp, vùng đồng bằng, điều tôi có thể cải tiến. Bạn có thể nhận xét về trang phục của tôi. Điều đó sẽ không thể là hữu ích, nhưng bạn hoan nghênh nhận xét về bất kỳ và tất cả mọi thứ. Xin vui lòng, xin vui lòng cho tôi thông tin phản hồi. Tôi đánh giá nó rất nhiều và nó có nghĩa là rất nhiều cho tôi. Là một trong nhiều tiêu chuẩn, vui vẻ. Chúng ta sẽ có rất nhiều niềm vui. Hy vọng rằng trong khóa học này, bạn sẽ có rất nhiều niềm vui. Chúng tôi sẽ có kẹo ở phần. Chúng tôi sẽ có âm nhạc. Chúng tôi sẽ hy vọng tìm hiểu một một phần nào tốt, vì vậy tôi muốn đây là một niềm vui, kinh nghiệm tham gia. Tôi biết một số bạn đã ngủ trong các bài giảng mà bạn đã có trước đó ngày hôm nay, để hy vọng rằng sẽ không có trường hợp hiện nay. Và nếu đó là trường hợp hiện nay, chỉ cần không ngáy vì mà có thể được ghi lại trên máy ảnh. Ngọt ngào. Mọi câu hỏi, ý kiến, hoặc quan tâm trước khi tôi chuyển về bất cứ điều gì chúng tôi đã nói về? Tuyệt vời. Vì vậy, chúng ta sẽ đi vào mảng đầu tiên. Đây là cách bạn làm cho một mảng. Chúng tôi đã nhìn thấy điều này trước đây. Bạn có một kiểu dữ liệu, bạn có một tên, và sau đó bạn có một kích thước. Ngay tại đây, tôi tạo ra hai mảng. Người đầu tiên là một mảng kí tự, và nó có 26 gian. Điều thứ hai là một mảng của điểm, và nó có ba không gian cho ba số nguyên. Có? HỌC SINH: Có phải tất cả các slide có sẵn ở đâu đó cho chúng tôi? Jason Hirschhorn: Great câu hỏi. Câu hỏi đặt ra là, là tất cả những trang trình bày có sẵn? Vâng. Tất cả các slide sẽ có sẵn, và trong tương lai, tôi sẽ gửi email cho bạn bạn trước khi phần. Nhưng ngày hôm nay, bởi vì đây là lần đầu tiên tuần, chúng tôi đã có một sự khởi đầu muộn. Vì vậy, thông thường, bạn sẽ nhận được các slide, nhưng họ sẽ có sẵn trực tuyến Tôi sẽ gửi email cho bạn ngay sau giờ học. Bất kỳ câu hỏi khác? Vì vậy, một lần nữa, mảng hộp, vì thiếu một từ tốt hơn, giữ nhiều các yếu tố của một kiểu dữ liệu, và họ bên cạnh nhau trong bộ nhớ. Và như vậy một lần nữa, đây là cách bạn có thể làm hai loại mảng. Vì vậy, sau khi bạn đã thực hiện mảng của bạn với dòng đầu tiên - điểm int, khung ba, dấu đóng ngoặc - bạn muốn khởi tạo nó. Bạn muốn đặt một số giá trị trong đó. Và đây là cách bạn đặt một số giá trị trong có, chỉ cần lựa chọn các chỉ tiêu và ghi mã số. Chúng ta hãy vẽ này trên diễn đàn. Tất cả mọi người có thể nhìn thấy? Tất cả mọi người có thể nhìn thấy. Ngọt ngào. Vì vậy, đó sẽ là của tôi mảng được gọi là Điểm. Như bạn có thể thấy, đó là kích thước ba. Có ba hộp trong đó. Mỗi người có thể phù hợp với những gì loại kiểu dữ liệu? HỌC SINH: Integer. Jason Hirschhorn: Một số nguyên trong một này. Chúng tôi đã viết int điểm, và từ đầu tiên là kiểu dữ liệu đó sẽ đi vào các ô trong mảng đó. Vì vậy, tôi có thể phù hợp với ba. Tại sao tôi không lên có trên diễn đàn? Tại sao nó nói điểm không bằng 1? Nhắc nhở tôi về tên của bạn. HỌC SINH: Kurt. Jason Hirschhorn: Kurt. HỌC SINH: Có. Jason Hirschhorn: Tại sao? HỌC SINH: Bởi vì chỉ số đầu tiên là bằng không, chúng tôi bắt đầu đếm từ số không. Jason Hirschhorn: Vì vậy, chúng ta bắt đầu đếm ở số không. Đó chính quyền. Đây là phần khó hiểu và ý chuyến đi bạn lên, đặc biệt là khi bạn cố gắng để lặp qua mảng, mà chúng tôi sẽ làm trong một chút. Chúng tôi bắt đầu đếm từ số không. Vì vậy, nếu tôi muốn đề cập đến đầu tiên hộp, nó không phải là một hộp. Thật không may, đó là hộp số không. Điều thứ hai là một hộp, và trong này trường hợp, một phần ba là hai hộp. Những gì về hộp ba? Nơi hộp ba là? Hoặc nếu tôi muốn làm điểm, khung ba, dấu đóng ngoặc, có chuyện gì vậy? Vì vậy, bạn cho biết các ký tự null. Bất kỳ suy nghĩ khác? Điểm khung là những gì ba khung? HỌC SINH: Nó không thực sự tồn tại bởi vì bạn chỉ được xác định như điểm, khung ba. Jason Hirschhorn: Vì vậy, bạn nói nó không thực sự tồn tại. Trong một số trường hợp, khi chúng tôi đang làm việc với chuỗi, thường chúng tôi sẽ đặt một null nhân vật ở cuối. Chúng tôi sẽ đề cập đến trong một giây. Nhưng trong trường hợp này, không có hộp thứ ba ở đây. Vì vậy, các hộp cuối cùng trong mảng bất kỳ là kích thước trừ đi 1. Vì vậy, nếu chúng ta có một mảng có kích thước n, hộp đầu tiên là tại số không, sau cùng là tại n trừ đi 1. Và trong trường hợp này, nó không tồn tại. Có cái gì đó ở đây trong bộ nhớ, nhưng nó không phải là của chúng ta. Chúng tôi không sở hữu nó. Chúng tôi không yêu cầu nó. Vì vậy, nếu chúng ta cố gắng truy cập vào nó, mà chúng tôi sẽ làm trong một chút, chúng ta có thể sẽ gặp rắc rối. Trong trường hợp này, tôi khởi tạo của tôi mảng với ba biến. Chúng tôi đang đặt một trong hộp không, một hai trong hộp một và ba trong hộp hai. Không ai có bất kỳ câu hỏi về khởi tạo một mảng? Vì vậy, chúng tôi đã giới này ngay bây giờ. Điểm số, khung ba, dấu đóng ngoặc, không tồn tại. Chúng tôi không được lập chỉ mục trong khoa học máy tính, vì vậy chúng tôi bắt đầu đếm từ số không. Hộp cuối cùng có sẵn cho chúng tôi, đó là hộp thứ ba, nhưng nó được gọi là hộp số hai. Xuống dưới, đây là một sự thay thế cách khởi tạo mảng. Vì vậy, thay vì tạo ra các mảng trên một dòng, làm đầy hộp đầu tiên, sau đó hộp thứ hai, sau đó hộp thứ ba, bạn có thể làm tất cả trong một dòng. Vì vậy, trong dòng đó, cả hai mảng. Điều này tạo ra các mảng chính xác giống như những gì chúng tôi tạo ra ở đây, nhưng nó chỉ hiện nó trong một dòng. Bây giờ chúng ta đã tạo ra mảng của chúng tôi. Thường khi bạn tạo ra một mảng, bạn muốn làm điều gì đó với nó, cho dù đó là điền vào nó hoặc có được những thứ ra khỏi nó và in chúng ra trên màn hình. Trong trường hợp này, chúng ta sẽ thông qua của chúng tôi điểm số mảng, mà chúng ta khởi tạo trên dòng đầu tiên lên đây trong màu xám. Và sau đó trên dòng thứ hai, chúng tôi bắt đầu lặp qua mảng. Không ai có thắc mắc về cấu trúc của một vòng lặp? Vì vậy, đây là cho vòng lặp. Chúng tôi có điều kiện ban đầu của chúng tôi, và sau đó tình trạng thức của chúng tôi, và sau đó chúng tôi lặp đi lặp lại, tôi, mỗi vòng lặp. Và trong các dấu ngoặc nhọn trong này vòng lặp, những gì sẽ xảy ra nếu tôi được là để chạy chương trình này? Ai có thể cho tôi biết những gì chúng tôi sẽ nhận được? [? Matu? ?] MATU: In tất cả các điểm trên mỗi dòng. Nó sẽ in mỗi điểm trên một dòng riêng biệt. Jason Hirschhorn: Điều gì chính xác nó sẽ in? HỌC SINH: Nó sẽ in một, sau đó hai, sau đó ba. Jason Hirschhorn: Chính xác. Nó sẽ in một, sau đó hai, sau đó ba, mỗi ngày dòng riêng biệt, bởi vì chúng ta đang trải qua mảng và bạn sẽ thấy rằng thứ hai, printf tuyên bố, điểm i. Vì vậy, trên vòng đầu tiên thông qua của chúng tôi cho vòng lặp, tôi bằng không, có nghĩa là chúng tôi nhận được giá trị vào điểm số không - trong đó, nếu chúng ta trở lại sơ đồ của chúng tôi, là một trong những - và điền vào - oh, nó nói c. Đó nên là% d. Tôi sẽ khắc phục điều đó trong một chút khi Tôi bàn tay ra đến với bạn. Nhưng chúng tôi đang trình bày một số nguyên do đó, nó nên được% d ở đây, không phải% c. % C cho là gì? HỌC SINH: nhân vật. Jason Hirschhorn: nhân vật, chính xác. Một trong những khác là gì? Nếu bạn không muốn làm% d cho một số nguyên, những gì khác bạn có thể làm gì? HỌC SINH: i. Jason Hirschhorn:% i, chính xác. Vì vậy, bất kỳ câu hỏi về lặp lại thông qua mảng? Vì vậy, những gì sẽ xảy ra nếu chúng ta làm điều này? Thay vì làm tôi ít hơn ba, chúng tôi i nhỏ hơn hoặc bằng ba. Điều gì xảy ra khi chúng ta chạy mã này? Có, Annie? HỌC SINH: Họ sẽ in ra thứ lạ trên dòng thứ tư. Jason Hirschhorn: Vì vậy, bạn nói, là nó sẽ in ra những thứ lạ trên dòng thứ tư? Không ai có một câu trả lời cho câu hỏi của mình? Vì vậy, tỷ lệ cược là khi chúng ta đến - để vào vòng thứ tư thông qua cho chúng tôi vòng lặp, giống như bạn nghĩ, Annie, nó sẽ được điểm khung ba, mà chúng tôi đã tìm ra không tồn tại, và chúng tôi sẽ cố gắng và truy cập vào đó, in , hãy sử dụng nó một cách nào đó. Vì vậy, các máy tính có thể sẽ giận chúng tôi. Bạn là chính xác. Nó có thể thoát khỏi chương trình hoàn toàn. Nó có thể in ra một cái gì đó thực sự lạ. Bạn không thể nói chắc chắn. Tỷ lệ cược là nó có thể sẽ giận bạn và chỉ cần bỏ ngay lập tức. Nhưng đây là một lỗi phổ biến bạn sẽ có nơi mà bạn chỉ ra bởi một tại Cuối cùng, và đây là một lỗi sẽ bệnh dịch hạch bạn trong suốt mã hóa của bạn. Một trong những cách tôi muốn làm là chỉ trên một bảng trắng, đi qua mỗi lần lặp của các vòng trên tay hoặc trên giấy để xem những gì đang xảy ra, và sau đó bạn thường nhận ra, oh chờ đợi, tôi không nên đã đi vào nhỏ hơn hoặc bằng ba. Tôi nên dừng lại ở hai, đó là những gì sẽ xảy ra nếu tình trạng của bạn là ít hơn hơn ba. Bất kỳ câu hỏi cho đến nay? Ngọt ngào. Vì vậy, tất cả các bạn có máy tính của bạn mở. Chúng tôi sẽ cung cấp cho bạn 02:58 phút để viết một chương trình tạo ra một mảng với các số nguyên một thông qua các năm và sau đó in ra mỗi số nguyên trên một dòng mới. Và nếu bạn có bất kỳ câu hỏi, giơ tay lên. Tôi rất vui khi đi qua. Như tôi đã nói, chúng ta hãy xem ba phút để viết này. Tất cả mọi người là OK nếu tôi đi đến một cửa sổ mới và đóng? Tôi xin lỗi nếu bạn không có một cơ hội để kết thúc, nhưng chúng ta sẽ làm điều đó cùng nhau ngay bây giờ. Vì vậy, trên màn hình, tôi đã # bao gồm cs50.h, # bao gồm stdio.h. Ai đó có thể cho tôi biết những gì hai dòng làm gì? Michael? HỌC SINH: Họ bao gồm các thư viện mà CS50 thực hiện và rằng Steve có lưu để bạn có thể sử dụng để làm cho cuộc sống của bạn dễ dàng hơn. Jason Hirschhorn: Vì vậy, bạn biết họ bao gồm các thư viện, một trong đó CS50 thực hiện, cs50.h, và một trong đó là chuẩn, đi kèm với gói C, stdio.h. Ý anh là sao bao gồm các thư viện, mặc dù? Bạn có thể cho biết cụ thể hơn? HỌC SINH: Nó làm cho nó để bạn có thể sử dụng từ mã nhất định để có một hoạt động xảy ra mà không cần phải đi và làm cho chức năng c mình. Jason Hirschhorn: có thể bạn cung cấp cho tôi một ví dụ? HỌC SINH: Giống như printf là một trong những bạn có thể sử dụng. Jason Hirschhorn: printf. Vì vậy, bạn nói printf là một trong những chức năng hơn là có đến printf viết trên của riêng bạn, printf là bao gồm thực sự trong stdio.h, vì vậy bạn chỉ có thể sử dụng nó và giả định rằng nó sẽ làm việc. Trong stdio.h, nếu bạn mở tập tin đó, nó sẽ bao gồm cách printf công trình, tất cả các mã cho printf? Tại sao anh lại lắc đầu của bạn? HỌC SINH: Bởi vì các tập tin tiêu đề chỉ bao gồm việc khai báo hàm. Jason Hirschhorn: Chính xác phải. Các tập tin tiêu đề chỉ bao gồm khai báo hàm. Vì vậy, về cơ bản, khi bạn biên dịch này, Hãy nhấn Count, mà chúng ta sẽ làm trong một thứ hai, trình biên dịch biết rằng nếu bạn sử dụng printf, printf tồn tại. Nó sẽ được xác định ở đâu đó. Nó không phải là một vấn đề cho bạn sử dụng nó. Và sau đó sau này, nó sẽ bao gồm các những người thân và số không thực sự chứa printf của việc thực hiện và kết hợp chúng với mã của bạn. Làm thế nào để bạn chắc chắn rằng nó bao gồm các những người thân và số không cho, nói rằng, có được chuỗi? HỌC SINH: Nhận chuỗi là trong cs50.h. Jason Hirschhorn: Đúng vậy. Vì vậy, nói rằng nhận được chuỗi tồn tại, khai báo hàm. Nhưng sau đó những người và số không, nhị phân tập tin đó thực sự bao gồm các thực hiện get chuỗi? Làm thế nào để bạn chắc chắn rằng đi với chương trình của bạn? HỌC SINH: Vượt qua các mối liên kết trong đối số dòng lệnh. Jason Hirschhorn: Vượt qua các mối liên kết trong đối số dòng lệnh. Làm thế nào để bạn làm điều đó? HỌC SINH: Đó là-l dòng trong kêu vang Jason Hirschhorn: Chính xác phải. Bạn nói-l CS50, phải không? Điều đó bao gồm những người thân và số không. HỌC SINH: Nhưng làm không điều đó cho bạn, phải không? Jason Hirschhorn: Chính xác. Làm điều đó cho bạn, nhưng cuối cùng, bạn sẽ không phải làm, hoặc bạn sẽ phải thực hiện một Hãy ngày của riêng bạn, vì vậy đó là một điều tốt để nhớ. Nếu bạn đã đi vào sử dụng một trong những các thư viện khác, không chỉ làm bạn có viết # bao gồm và sau đó thư viện. Bạn cũng cần phải liên kết nó vào Và hai điều này là khác nhau. -L CS50 là khác nhau hơn # bao gồm cs50.h. Sau đó chúng tôi có int main trống xoăn niềng răng, và bây giờ chúng tôi đang đi vào mã bên trong chính. Dòng đầu tiên tôi có ở đây là một lời nhận xét nói rằng, tạo ra một mảng với số nguyên một năm qua. Một lời tốt đẹp để mô tả những gì tôi là những gì có ngay bây giờ trên màn hình, chỉ ý kiến ​​trong chính? Chúng ta gọi đó? HỌC SINH: Mã giả. Jason Hirschhorn: Mã giả. Cảm ơn bạn, Jeffrey. Đó là chính xác. Giả. Các bạn đã nhìn thấy giả trước? Nâng cao tay của bạn nếu bạn đã sử dụng giả trước khi vấn đề thiết lập một. Khoảng một nửa của bạn. Tôi rất muốn khuyên bạn sử dụng giả để phá vỡ các vấn đề thành nhỏ hơn, dễ dàng hơn để cắn miếng. Ngoài ra, nếu bạn làm giả, bạn có ý kiến ​​của bạn đã được phần lớn được xây dựng trong, vì vậy bạn không cần phải quay trở lại và cố gắng tìm ra những gì bạn đang làm. Vì vậy, ai đó có thể cho tôi dòng đầu tiên này để tạo ra một mảng với một số nguyên thông qua năm? Bạn? HỌC SINH: Int và sau đó bạn có thể gọi bất cứ điều gì số, và sau đó vuông khung năm. Jason Hirschhorn: số Vì vậy, int, khung vuông năm. HỌC SINH: Bình đẳng, và sau đó dấu ngoặc nhọn. Jason Hirschhorn: Bình đẳng, dấu ngoặc nhọn. HỌC SINH: Một, hai, ba, bốn. Jason Hirschhorn: Một, hai, ba, bốn, năm. HỌC SINH: Và sau đó dấu ngoặc nhọn và sau đó dấu chấm phẩy. Jason Hirschhorn: Và xoăn niềng răng và dấu chấm phẩy. Tuyệt vời. In ra mỗi int trên một dòng mới. Người khác có thể cung cấp cho tôi mã, xin vui lòng? [? Matu? ?] Đi trước. HỌC SINH: Đối với ( Jason Hirschhorn: Đối với ( HỌC SINH: Int i = 0 Jason Hirschhorn: Int i = 0 HỌC SINH: Dấu chấm phẩy tôi ít hơn năm. Jason Hirschhorn: Dấu chấm phẩy, tôi ít hơn 5. HỌC SINH: Dấu chấm phẩy, i + +. Jason Hirschhorn: Dấu chấm phẩy, i + +. HỌC SINH: ngoặc đóng, sau đó mở cú đúp. Jason Hirschhorn: ngoặc đóng và hai dấu ngoặc. Bên trong dấu ngoặc? HỌC SINH: Và sau đó printf "% d / n" Jason Hirschhorn: Xin lỗi, giữ trên. Printf "% d / n, trích dẫn khép kín. HỌC SINH: Và sau đó trích dẫn khép kín, dấu phẩy, số, khung i. Jason Hirschhorn: Comma, số, khung i. HỌC SINH: Xin lỗi, số khung tôi. Jason Hirschhorn: số, khung i. HỌC SINH: Xin lỗi. Và sau đó đóng dấu ngoặc đơn, dấu chấm phẩy. Jason Hirschhorn: Đóng cửa ngoặc đơn, dấu chấm phẩy. Tôi sẽ tiết kiệm đó. Chúng ta sẽ làm cho số lượng. Và làm thế nào để tôi chạy đếm? HỌC SINH: Dấu gạch chéo ngược. HỌC SINH: Dot dấu gạch chéo - Jason Hirschhorn:. / Đếm, chính xác. Cảm ơn bạn. . / Đếm. Một, hai, ba, bốn, năm trên các tuyến đường mới. Trông giống như nó làm việc. Có, Noah? HỌC SINH: Bạn cũng có thể làm nhỏ hơn hoặc bằng bốn, như tôi là ít hơn hoặc bằng bốn? Có lợi thế để làm ít hơn năm, hay chỉ là một cách khác nhau viết nó? Jason Hirschhorn: Vì vậy, câu hỏi là bạn có thể làm tôi nhỏ hơn hoặc bằng bốn thay vì tôi là ít hơn năm. Sẽ đã làm việc cùng? HỌC SINH: Nó nên. Jason Hirschhorn: Có. Nó hoàn toàn sẽ làm việc như nhau. Phong cách, nó thường ít hơn, và bạn sẽ thấy trong một giây khi chúng tôi dây, bạn có thể sử dụng một cái gì đó gọi là strlen, bạn đã nhìn thấy trước đây, để có được chiều dài của chuỗi. Và bạn không thể làm ít hơn hoặc bằng strlen. Bạn có thể làm nhỏ hơn hoặc bằng strlen trừ đi một. Vì vậy, nó chỉ đẹp hơn để làm ít hơn strlen. Có? HỌC SINH: Và trong thực tế các câu đố, làm chúng tôi đã đóng góp ý kiến ​​trên của chúng tôi mã là tốt? Jason Hirschhorn: Câu hỏi được trong các câu đố, bạn có có đóng góp ý kiến? Vì vậy, chúng ta sẽ nói thêm về các câu đố khi họ đưa ra, nhưng nói chung, một tốt Nguyên tắc là bất cứ khi nào bạn viết mã, đóng góp ý kiến. Nếu bạn nhận được mã sai nhưng comment ngay, bạn có thể nhận được một số tín dụng cả hai từ tôi nếu tôi đã được phân loại bạn trên một tập hợp vấn đề hoặc một bài kiểm tra. Vì vậy, ý kiến ​​luôn tốt để cung cấp. Ngọt ngào. Đếm. Xuất sắc công việc. Chúng ta hãy chuyển. Dây. Dây. Chúng tôi đã nhìn thấy điều này trước đây trong bài giảng. Này thổi tâm trí của tôi khi tôi đầu tiên tìm thấy điều này. Nó có lẽ đã không thổi của bất cứ ai quan tâm ở đây, nhưng đó là OK. Dây là mảng của các nhân vật, và họ kết thúc với, như bạn đã nói trước đó, các terminator null, mà là nhân vật / 0 này. Nếu chúng ta để vẽ một chuỗi trên hội đồng quản trị, chúng tôi sẽ vẽ nó ở đây. Vì vậy, bao lâu là chuỗi này? Xin lôi. Bao lâu là chuỗi này? HỌC SINH: [nghe được]. Jason Hirschhorn: Bốn? Tại sao nó bốn? HỌC SINH: Vì vị trí thứ năm là cho các ký tự null. Jason Hirschhorn: Vì vậy, vị trí thứ năm là cho các ký tự null. Vì vậy, nếu tôi được là để chạy strlen trên này, nó sẽ cung cấp cho tôi bốn. Sửa chữa. Và mảng, tuy nhiên, nếu tôi được khởi tạo mảng này, bao nhiêu không gian tôi sẽ phải yêu cầu? HỌC SINH: Năm. Jason Hirschhorn: Năm. Tôi sẽ phải yêu cầu trong năm, nhưng tôi có thể chỉ đưa bốn nhân vật trong đây bởi vì tôi cần phải đặt vô đó thúc vào cuối. Vì vậy, chúng ta sẽ viết trong "ohai" và đưa các terminator null ở cuối. Chúng tôi sẽ nói điều này là chuỗi s bằng này. S khung không là gì? s khung không, Annie? HỌC SINH: O. Jason Hirschhorn: O, chính xác. s khung không? s khung năm? s khung năm? HỌC SINH: Không tồn tại. Jason Hirschhorn: Không tồn tại. Chính xác. Mát mẻ. Bất kỳ câu hỏi về sự hiểu biết chuỗi như mảng của nhân vật? OK, sau đó. Một chương trình nhiều hơn cho các bạn. Viết một chương trình yêu cầu người dùng cho một chuỗi sau đó in ra mỗi ký tự trên một dòng mới. Vì vậy, chúng ta hãy xem ba phút để viết chương trình này, và sau đó chúng tôi sẽ mã nó như một nhóm. Xin lôi. Em có cần phải thấy điều này? HỌC SINH: số Jason Hirschhorn: OK. Chúng ta hãy một phút hơn để mã này, hoặc ít nhất là bắt đầu vào nó. Vì vậy, bạn có thể tiếp tục làm việc, nhưng tôi sẽ để bắt đầu đi qua nó. Vì vậy, như trước đây, tôi có trên màn hình # Bao gồm cs50.h, # bao gồm stdio.h. int void main. Trong dấu ngoặc nhọn chính, tôi có hai ý kiến, giả. Là một trong những yêu cầu một chuỗi từ người sử dụng. Thứ hai là in ra mỗi ký tự trên một dòng mới. Vì vậy, Anna, bạn có thể cho tôi hỏi cho một chuỗi từ người sử dụng? HỌC SINH: printf. Jason Hirschhorn: printf? HỌC SINH: Có. ( Jason Hirschhorn: ( HỌC SINH: "cho tôi một chuỗi. Jason Hirschhorn: "cho tôi một str - tiếc - chuỗi. HỌC SINH: / n ") dấu chấm phẩy. Jason Hirschhorn: Kết thúc chuỗi, ngoặc đóng, dấu chấm phẩy. HỌC SINH: Có. Và sau đó dòng tiếp theo, chuỗi s = nhận được chuỗi. Jason Hirschhorn: String s = nhận được chuỗi. HỌC SINH: Có. Và sau đó () Jason Hirschhorn: () HỌC SINH: Dấu chấm phẩy. Jason Hirschhorn: Dấu chấm phẩy. Tuyệt vời. Vì vậy, tôi sẽ nhận được một chuỗi và Tôi sẽ lưu nó trong những gì? Biến là những gì được gọi là mà bạn tạo ra? HỌC SINH: String s. Jason Hirschhorn: Biến là được gọi là s. Đó là kiểu string. Chính xác. Điều tiếp theo chúng tôi muốn là in ra mỗi ký tự trên một dòng mới. Ai có thể cho tôi mã? [Nghe được]? Bạn có thể đưa nó cho tôi? HỌC SINH: Chắc chắn. Jason Hirschhorn: Hãy làm điều đó. Và xin lỗi. Tôi không muốn lặp lại những gì bạn nói bởi vì bạn đang đi đúng hướng, nhưng tôi phải lặp lại nó để khi họ ghi lại này, họ có thể nhận được tất cả ra văn bản trên phiên âm. Vì vậy bạn chỉ có thể tiếp tục nói chuyện. Thật không may, tôi có để nói nó hơn bạn. Tôi xin lỗi, nhưng - HỌC SINH: Được rồi. Cho int i = 0 Jason Hirschhorn: Đối với int i = 0 HỌC SINH: Tôi ít hơn - Jason Hirschhorn: Dấu chấm phẩy. HỌC SINH: Trước đây, chúng ta có thể đặt một biến để bạn có được chiều dài tên int? Jason Hirschhorn: Oh, bạn không muốn đặt dấu chấm phẩy? OK. Vì vậy, những gì bạn muốn làm sau không? HỌC SINH: Tôi muốn có được chiều dài chuỗi s và thiết lập đó cho một biến? Jason Hirschhorn: OK, vậy làm thế nào để làm điều đó? HỌC SINH: Vì vậy, bạn làm int chiều dài = Jason Hirschhorn: Int chiều dài = HỌC SINH: S-T-R-L-E-N. Jason Hirschhorn: S-T-R-L-E-N - HỌC SINH: Trong s. Dấu ngoặc đơn. Jason Hirschhorn: (s). HỌC SINH: Và sau đó tôi nghĩ rằng bạn phải đặt một dấu chấm phẩy giữa hai số nguyên. Jason Hirschhorn: Một dấu chấm phẩy sau không? HỌC SINH: Vâng. Sau đó đặt một dấu chấm phẩy sau đó, và bạn nói, tôi ít hơn chiều dài. tôi ít hơn chiều dài, là biến. HỌC SINH: Và sau đó dấu chấm phẩy. Jason Hirschhorn: Dấu chấm phẩy. HỌC SINH: i + +. Jason Hirschhorn: i + +. Có vòng lặp cho chúng tôi. OK, bên trong vòng lặp. HỌC SINH: Và sau đó làm printf. Jason Hirschhorn: printf. HỌC SINH: Chân đế. Jason Hirschhorn: Dấu ngoặc đơn, dấu ngoặc kép. HỌC SINH: Dấu ngoặc đơn, dấu ngoặc kép,% c / n. Jason Hirschhorn:% c, OK. HỌC SINH: / n. Jason Hirschhorn: / n. HỌC SINH: giá đóng. Jason Hirschhorn: giá đóng. HỌC SINH: Dấu phẩy. Jason Hirschhorn: Dấu phẩy. HỌC SINH: S. Jason Hirschhorn: S. HỌC SINH: giá đỡ tôi. Jason Hirschhorn: đỡ tôi. HỌC SINH: Và sau đó đóng dấu ngoặc đơn. Jason Hirschhorn: ngoặc đóng. HỌC SINH: Và sau đó dấu chấm phẩy. Jason Hirschhorn: Dấu chấm phẩy. Tuyệt vời. Vì vậy hãy tiết kiệm này. Làm cho chính tả. Oh boy. Tôi đã có một vài sai sót. Lỗi đầu tiên trên dòng 11, nó nói, dự kiến ​​sẽ biểu hiện, và nó đem lại cho tôi một lỗi thứ hai int, có lỗi. Có một số lỗi xung quanh đó. Không ai biết đó là lỗi gì? Kurt? HỌC SINH: Tôi nghĩ đó là nghĩa vụ là một dấu phẩy và không phải là một dấu chấm phẩy. Jason Hirschhorn: OK, một dấu phẩy thay vì một dấu chấm phẩy. Vì vậy, là tất cả chúng ta cần phải khắc phục? HỌC SINH: số Jason Hirschhorn: Điều gì khác chúng ta cần phải khắc phục? HỌC SINH: Chúng ta phải bao gồm string.h. Jason Hirschhorn: Bao gồm string.h. Nơi nào tôi cần phải bao gồm điều đó không? HỌC SINH: Cùng nơi bạn đang bao gồm những thứ khác, phải sau khi bao gồm stdio.h. Jason Hirschhorn: Hãy xem nếu điều này chạy đầu tiên bởi vì nhìn chung, tôi thích để sửa chữa một điều đầu tiên, và sau đó chạy nó, và sau đó nhìn thấy các lỗi, chúng tôi nhận được. Vì vậy, chúng ta sẽ rõ ràng các thiết bị đầu cuối kiểm soát n, chúng ta hãy làm cho chính tả. Vì vậy, một lỗi trên dòng 11. Dự kiến ​​sẽ dấu chấm phẩy. Và tôi vẫn nhận được lỗi trên dòng này. Vì vậy, nó đã không cho tôi một lỗi nói rằng nó không hiểu những gì strlen là, nhưng nó đem lại cho tôi lỗi này dòng, vì vậy những gì khác là sai? Đánh dấu? Marcus. HỌC SINH: Bạn cần phải loại bỏ thứ hai int khai? Jason Hirschhorn: Hủy bỏ int thứ hai. Hãy thử này. Bây giờ rõ ràng các thiết bị đầu cuối. Làm cho chính tả. Lỗi. Ngầm khai báo thư viện chức năng strlen. Vì vậy, bây giờ chúng tôi thấy lỗi đó. Những gì chúng ta cần phải bao gồm? HỌC SINH: string.h. Jason Hirschhorn: Bao gồm string.h, chúng tôi sẽ làm # bao gồm string.h ở đầu của màn hình. Hãy tiết kiệm, làm cho chính tả. Bây giờ biên soạn. Vì vậy, một lần nữa, những điều chúng ta cần thiết để nhớ dòng 12 trong vòng lặp cho chúng tôi khi chúng ta đang cài đặt nó lên, int i = 0, chiều dài = strlen (s). Đây là một chiến lược tuyệt vời. Phong cách này là rất tốt, thiết kế này là rất tốt. Chúng ta có thể đi vào những lý do sau, nhưng cách này, bạn chỉ cần gọi strlen một lần thay vì mỗi đơn thời gian bạn chạy qua các vòng lặp. Tuy nhiên, bạn cần phải sử dụng một dấu phẩy có và bạn không cần int một lần nữa. Nếu bạn khai báo cả những biến với nhau, bạn không cần int một lần nữa. Và sau đó nếu bạn đang sử dụng strlen, đó là một thư viện chức năng không có trong stdio.h hoặc cs50.h, làm chắc chắn rằng bạn bao gồm string.h. Kurt? HỌC SINH: Vì vậy, sau đó nếu bạn không cần phải nói loại chiều dài, không có có nghĩa là nó có phải là một int? Bạn không thể có hai khác nhau loại có? Jason Hirschhorn: Vì vậy, bạn có thể có hai loại khác nhau. Chiều dài là một int đây, mặc dù. Chiều dài là một int vì nó là dấu phẩy và sau đó điều tương tự. HỌC SINH: Vì vậy, nó giả định rằng nó sẽ để được giống như là người đầu tiên? Jason Hirschhorn: Chính xác. Chúng tôi sẽ không làm điều này, nhưng bạn có thể bao gồm hai biến trên cùng một đường dây sử dụng một loại dữ liệu. Vì vậy, int x, y sẽ tạo ra hai biến. Vì vậy, int x, y, nếu chúng ta làm điều đó, nó mang lại cho tôi không sử dụng một biến x và y vì chúng tôi không sử dụng chúng. Vì vậy, đặt trước khoảng trống chỉ là một là lừa ưa thích nếu bạn không sử dụng một cái gì đó, để sử dụng nó. Nhưng như bạn thấy, tôi tạo ra x và y trên cùng một dòng với một dấu phẩy. Điều này tạo ra hai số nguyên ngay tại đó. Vì vậy, có, hoàn toàn có thể tạo ra hai điều trên cùng một dòng cách nhau bằng dấu phẩy. Hãy loại bỏ những người, mặc dù. Do đó, có lỗi chính tả. Cảm ơn các bạn để mã hóa nó cho chúng ta. Chúng ta hãy làm cho nó một lần nữa, chạy nó. Cung cấp cho tôi một chuỗi. [Nghe được], bạn đã làm nhất của nó. Chuỗi là những gì? HỌC SINH: Xin chào. Jason Hirschhorn: Xin chào. H-E-L-L-O, mỗi ký tự trên một dòng. Sẽ rất tốt. Chúng ta hãy chạy nó một lần nữa. Luôn luôn kiểm tra đối với trường hợp góc. Một trường hợp góc tốt là những gì để kiểm tra? HỌC SINH: Một số? Jason Hirschhorn: Một số. Vì vậy, tôi sẽ đặt trong 1, và nó in ra 1. Nó không yêu cầu thư, vì vậy nó có vẻ như số lượng công việc. Tốt trường hợp góc để kiểm tra. Một góc tốt là những gì trường hợp để kiểm tra? HỌC SINH: Một chuỗi trống. Jason Hirschhorn: Hm? HỌC SINH: Giống như một chuỗi rỗng. Jason Hirschhorn: Hết chuỗi. Vì vậy, chúng ta không đưa vào bất cứ điều gì. Và những gì được in ra? HỌC SINH: Không có gì. Jason Hirschhorn: Không có gì. Có vẻ như nó hoạt động. Bạn có thể thử các trường hợp góc hơn, nhưng thường số, một dữ liệu khác nhau là tuyệt vời để thử, cũng là không có gì. Không có gì, không, tiêu cực luôn điều tuyệt vời để thử và những điều bạn cần kiểm tra, điều chắc chắn chúng tôi sẽ kiểm tra cho và Kiểm tra 50 sẽ kiểm tra. Thắc mắc về spell.c? OK, chúng ta hãy quay trở lại. Tôi có chương trình một lần nữa cho các bạn để viết. Nó được gọi là students.c. Đây là một chương trình yêu cầu người dùng năm tên, sau đó chọn ngẫu nhiên và in ra một trong những tên. Chương trình này là hơn một chút tham gia hơn so với trước hai chúng tôi đã viết, vậy tại sao chúng ta không có năm phút để mã nó cá nhân, và sau đó chúng tôi sẽ mã nó như một nhóm. Chương trình này cũng liên quan đến một số điều bạn có thể không nhìn thấy trước, vì vậy nếu bạn có một câu hỏi về, làm thế nào Tôi làm điều đó, giơ tay lên. Tôi sẽ đi qua và chỉ cho bạn đi đúng hướng. Nhưng chúng tôi cũng đang làm điều đó bởi vì đây sẽ là một cách tốt để giới thiệu một số chủ đề mà là khó khăn. Vì vậy, nó hoạt động, phải không? HỌC SINH: Vâng. Jason Hirschhorn: Bất cứ khi nào bạn bật trong một bộ vấn đề, có rất nhiều cách để làm nó, nhưng một số có nhiều thanh lịch hơn so với những người khác. Hãy để chúng tôi bổ nhào nhập # Bao gồm cs50.h. # Bao gồm stdio.h. void main int, dấu ngoặc nhọn. Bên trong dấu ngoặc nhọn, Tôi có hai ý kiến. Người đầu tiên được, yêu cầu người sử dụng trong năm tên. Điều thứ hai là, chọn ngẫu nhiên và in ra một trong những tên. Vì vậy, chúng ta hãy làm người đầu tiên, hãy hỏi người sử dụng trong năm tên. Ai đã yêu cầu người sử dụng trong năm tên và có thể cho tôi biết làm thế nào để làm điều đó? Chỉ có hai người đã làm phần đầu tiên. Ba người đã làm phần đầu tiên. Bốn, năm. Tom, làm thế nào để bạn làm điều đó? HỌC SINH: Bạn sẽ khai báo một chuỗi và sau đó tên, khung năm. Jason Hirschhorn: String tên khung năm. Vì vậy, dòng này làm là gì, tên chuỗi khung năm? HỌC SINH: Bạn sẽ tuyên bố một mảng của chuỗi. Jason Hirschhorn: Đây là một mảng của chuỗi. Bao nhiêu dây sẽ để phù hợp đây? HỌC SINH: Năm. Jason Hirschhorn: Năm. Tuyệt vời. Chúng ta sẽ gọi nó là tên vì chúng ta sẽ có được nhiều người. OK, tiếp theo? HỌC SINH: Và sau đó bạn có một vòng lặp - Jason Hirschhorn: Đối với loop. HỌC SINH: - i = 0. Jason Hirschhorn: Đối với (int i = 0. HỌC SINH: Dấu chấm phẩy. Jason Hirschhorn: Dấu chấm phẩy. HỌC SINH: Tôi ít hơn năm. Jason Hirschhorn: Tôi ít hơn năm. HỌC SINH: Dấu chấm phẩy. Jason Hirschhorn: Dấu chấm phẩy. HỌC SINH: i + +. Jason Hirschhorn: i + +. HỌC SINH: Và sau đó đóng dấu ngoặc đơn. Jason Hirschhorn: ngoặc đóng, và sau đó một số dấu ngoặc nhọn. Bên trong dấu ngoặc nhọn? HỌC SINH: Và sau đó printf. Jason Hirschhorn: printf. HỌC SINH: Mở ngoặc đơn, tên% d. Jason Hirschhorn: Xin lỗi? HỌC SINH: Tên. Jason Hirschhorn: Tên. HỌC SINH: Và sau đó không gian, và sau đó% d. Jason Hirschhorn: Tên, không gian,% d. HỌC SINH: Và sau đó / n, và sau đó đóng cửa. Jason Hirschhorn: tên Vì vậy, không gian, % D / n, dấu ngoặc đóng. HỌC SINH: Comma, i + 1. Tôi xin lỗi. Đóng giá, và sau đó dấu phẩy, i +1. Jason Hirschhorn: Đóng cửa giá, dấu phẩy, i +1. HỌC SINH: Có. Và sau đó dòng tiếp theo - Jason Hirschhorn: i + 1. HỌC SINH: Có. Và sau đó slide tiếp theo là tên khung tôi. Jason Hirschhorn: Dòng tiếp theo là tên khung tôi. HỌC SINH: = nhận được chuỗi. Jason Hirschhorn: = Get - vốn G-E-T - chuỗi. Rất tiếc, xin lỗi. HỌC SINH: Mở, đóng ngoặc và sau đó - Jason Hirschhorn: Mở, đóng dấu ngoặc. HỌC SINH: Dấu chấm phẩy. Jason Hirschhorn: Dấu chấm phẩy. OK, vì vậy bạn khởi tạo mảng chuỗi, tên, và sau đó đi qua một cho vòng lặp, và năm lần in ra một số nhắc nhở cho người sử dụng và sau đó lưu trữ năm dây. Không ai có bất kỳ điều chỉnh này? Tom, tôi nghĩ rằng tất cả mọi người đồng ý với bạn. Trông khá tốt. OK. Tại sao anh lại làm tôi 1, mặc dù? HỌC SINH: Tôi có nghĩa là, không có được, nhưng i +1 để nó tên để đặt tên cho một năm. Nếu không, nó sẽ là tên không để đặt tên cho bốn. Jason Hirschhorn: Vì vậy, bạn đã làm tôi 1 bởi vì nếu không nó sẽ có in ra không thông qua bốn bởi vì đó là cách các máy tính suy nghĩ, nhưng con người không thực sự đọc như thế. Đó là điều khác bạn sẽ gặp phải. Đôi khi bạn in ra một cái gì đó cho người sử dụng, bạn sẽ muốn làm cho nó một chút đẹp hơn, và làm i +1 trong trường hợp này là một cách để làm cho nó đẹp hơn. Tôi cũng thấy năm hai lần, tên chuỗi là năm, tôi là ít hơn năm. Tôi biết nơi bạn có năm. Bạn đã nhận nó từ tôi nói bạn năm tên. Nhưng nếu chúng ta muốn làm cho một mã số chút mạnh mẽ hơn, có một điều chúng tôi có thể làm là ở đây, bên ngoài của int, chúng ta có thể làm một cái gì đó như thế này, # Xác định, và chúng ta có thể làm TÊN 5. Vì vậy, về cơ bản, bất cứ nơi nào tôi viết vốn N, vốn A, vốn M, vốn E, vốn S, chuỗi, nó sẽ thay thế rằng với 5 trong các mã. Hoặc chúng ta hãy gọi nó - chúng tôi sẽ chỉ gọi nó là SỐ. Vì vậy, tôi xác định tất cả các mũ Số là 5. Vì vậy, tại bất cứ nơi nào tôi có số 5, tôi có thể thay thế nó bằng tất cả số mũ. Và bây giờ, nếu tôi muốn thay đổi số tên, tất cả những gì cần làm là này một dòng, dòng bốn, nơi tôi có # Xác định số lượng 5, thay đổi điều đó đến 10, hoặc thay đổi đến 4. Khi mã của bạn được lâu hơn, bạn không sẽ nhớ tất cả những nơi mà bạn đặt bao nhiêu tên bạn muốn, và trong để bạn không bỏ lỡ một, đây là một cách tốt để làm điều đó, để tìm một cái gì đó lên hàng đầu và sau đó chỉ cần sử dụng cụm từ đó ở khắp mọi nơi trong mã của bạn. Marcus? HỌC SINH: Có phải đó là phong cách ưa thích hơn trên toàn cầu xác định một n không đổi? Jason Hirschhorn: Vậy là phong cách ưa thích hơn trên toàn cầu xác định một n không đổi? Vì vậy, bạn đang nói rằng bạn có thể làm, int number = 5? HỌC SINH: Họ có phụ âm trong C hay không? Jason Hirschhorn: Hoặc const - trong bằng nhau. Vì vậy, bạn đang nói chỉ một biến toàn cầu? HỌC SINH: Vâng. Jason Hirschhorn: Vì vậy, phong cách, có không nhất thiết phải một trong những quyền trả lời, nhưng cả hai cách đó tốt hơn hơn là chỉ ném những ngẫu nhiên số trong mã của bạn. Chúng tôi gọi họ là con số ma thuật. Khi tôi nhìn vào mã của bạn hoặc khi ai đã đọc qua nó, họ không muốn chỉ là những con số ngẫu nhiên mà không có ý nghĩa. Thậm chí số 26, mà nói chung là số lượng chữ cái trong bảng chữ cái, nó tốt hơn để xác định bảng chữ cái lên hàng đầu và lưu số 26 trong chuỗi, nếu có ý nghĩa. Hoặc về vấn đề thiết lập một, chứ không phải là - một lần nữa, chúng tôi không nói về việc này tại thời gian, nhưng thay vì chỉ ném trong một 25 ở khắp mọi nơi hoặc 10, bạn có thể lưu số 25 như QUÝ hoặc 10 như Dime, và làm cho nó dễ dàng hơn cho bất cứ ai đã đọc qua mã của bạn để hiểu lý do tại sao bạn đã chọn con số đó. Và cũng có thể cho bạn, nếu bạn đã bao giờ muốn cập nhật mã của bạn, nó làm cho nó một chút mạnh mẽ hơn. Yeah? HỌC SINH: là mã này cũng sẽ sẽ có sẵn cho chúng tôi sau? Jason Hirschhorn: Tất cả các mã mà chúng tôi đã viết với nhau là sẽ được gửi đến bạn chàng trai và có sẵn. Vâng. Vì vậy, yêu cầu người dùng trong năm tên. Ngẫu nhiên lựa chọn và in một trong những tên. Ai đã làm dòng này? Đây là dòng khó khăn nhất ở đây. Xin lỗi, Tom. Bạn đã làm một công việc thực sự tốt, nhưng đây là một chút phức tạp hơn. Marcus, đi trước. HỌC SINH: Vâng đầu tiên, bạn sẽ cần phải bao gồm stdlib.h và time.h. Jason Hirschhorn: Vì vậy, bạn đang nói ở hàng đầu, bao gồm hai thư viện hơn. Bạn muốn tôi bao gồm S-T-D-L-tôi-B dot H, thư viện chuẩn, và những gì là một trong những khác? HỌC SINH: Time.h. Jason Hirschhorn: # bao gồm time.h. Vì vậy, đây là hai thư viện hơn. Tôi giả sử bây giờ chúng ta sẽ được sử dụng chức năng được chứa trong những hai, đó là lý do tại sao bạn cần bao gồm chúng? HỌC SINH: Vì vậy, sau đó, đầu tiên bạn sẽ muốn viết srand. Jason Hirschhorn: srand. HỌC SINH: (thời gian (0) Jason Hirschhorn: Xin lỗi. Srand (time ( HỌC SINH: 0. Jason Hirschhorn: 0. HỌC SINH:)), dấu chấm phẩy. Jason Hirschhorn: Một dấu ngoặc đóng cửa? Dấu chấm phẩy. Tôi sẽ chỉ cần thay thế không bằng NULL. Nó sẽ làm gì về những điều tương tự, nhưng Thông thường, bạn sẽ thấy NULL, mà chúng tôi sẽ nói về điều này dòng trong một giây. HỌC SINH: Phong cách tốt hơn? Jason Hirschhorn: Thông thường, người NULL đúng, nhưng điều tương tự. HỌC SINH: Và sau đó int tên. Jason Hirschhorn: tên Int. HỌC SINH: = Jason Hirschhorn: = HỌC SINH: Rand. Jason Hirschhorn: Rand. HỌC SINH: () Jason Hirschhorn: () HỌC SINH: số Modulo. Jason Hirschhorn: modulo là gì? Các nhân vật? Nhân vật phần trăm? HỌC SINH: nhân vật phần trăm. Modulo số mà bạn định nghĩa lên hàng đầu. Jason Hirschhorn: Modulo số. HỌC SINH: Và sau đó dấu chấm phẩy. Jason Hirschhorn: Dấu chấm phẩy. HỌC SINH: Và sau đó dòng mới, printf. Jason Hirschhorn: printf. HỌC SINH: ( Jason Hirschhorn: ( HỌC SINH: " Jason Hirschhorn: " HỌC SINH:% s / n Jason Hirschhorn:% s / n HỌC SINH: " Jason Hirschhorn:% s / n " HỌC SINH: Comma, tên không gian. Jason Hirschhorn: Không gian - HỌC SINH: Oh, tôi đoán, những gì chúng tôi đã gọi nó đây? Jason Hirschhorn: Chúng tôi gọi nó là tên. HỌC SINH: Mở khung, tên. Jason Hirschhorn: Mở khung, tên. HỌC SINH: đóng khung. Jason Hirschhorn: đóng khung. HỌC SINH:) Jason Hirschhorn:) HỌC SINH: Dấu chấm phẩy. Jason Hirschhorn: Dấu chấm phẩy. OK, chúng ta hãy tiết kiệm. Chúng ta hãy làm cho mã này. Sinh viên. Chúng ta hãy chạy mã này. Sinh viên. Không / học sinh.. . / Sinh viên. Tên một. Chúng tôi sẽ nói David. Tên hai, RJ. Tên ba, Rob. Tên bốn, Lucas. Tên năm, Joseph. Và sau đó in ra Joseph một lần nữa. Vì vậy, hãy để tôi chạy này một lần nữa. Hãy để tôi làm cùng tên. David, RJ, Rob, Lucas, Joseph. Và nó đã cho tôi thời gian này, David. Vì vậy, tôi đã làm điều tương tự, nhưng nó đã cho tôi một điều khác nhau, và đó là bởi vì, tất nhiên, chúng tôi đang yêu cầu cho một tên ngẫu nhiên. Vì vậy, tôi nghĩ rằng, dựa tắt của tôi lang thang xung quanh căn phòng, mà hầu hết mọi người có thể có phần đầu bên phải, thiết lập mảng đó và sau đó nhận được tất cả các tên. Tôi đang nói về dòng 10 đến 16. Nhưng dòng 18 đến 21 là có thể một số thứ mà bạn chưa từng thấy trước đây, vì vậy hãy đi qua những. Dòng này, srand thời gian NULL cơ bản - xin lỗi, chúng ta hãy bỏ xuống một dòng, rand (). Cung cấp cho bạn một số ngẫu nhiên, một số nguyên ngẫu nhiên. Và nếu bạn đánh người đàn ông rand, vốn rất nhiều bạn đã làm - M-A-N không gian R-A-N-D - trong các thiết bị đầu cuối như thế này, M-A-N không gian R-A-N-D, nhấn Enter. Bạn sẽ đưa ra để hướng dẫn và sẽ có thể đọc mà rand kết quả đầu ra lệnh num giả byte ngẫu nhiên sau khi hạt giống số ngẫu nhiên máy phát điện một lần. Vì vậy, đó là một mô tả. Đó là những gì rand không, cho bạn một số ngẫu nhiên khi bạn gọi chức năng đó. Thật không may, nó không thực sự ngẫu nhiên bởi vì nếu bạn chỉ cần gọi ngẫu nhiên mà không nhận được nó một số hạt giống, một số điểm bắt đầu, nó sẽ luôn luôn chọn một trong những giống và nó sử dụng một công thức để xác định kế tiếp. Vì vậy, nếu bạn gọi rand, nó sẽ chỉ cung cấp cho bạn những điều tương tự. Nó sẽ rất dự đoán được. Nó thực sự sẽ không được ngẫu nhiên. Vì vậy, những gì chúng ta cần làm, mỗi Marcus hướng dẫn cho tôi, là rand hạt giống với cái gì khác, đó là những gì hàm srand không. Nó giống rand với một cái gì đó nhiều hơn một chút ngẫu nhiên hơn điều tương tự, và anh gieo mầm với thời gian NULL, mà là, chỉ bằng cách quy ước, hiện tại thời gian trong vài giây. Vì vậy, bạn đang giả định rằng tất cả mọi người là không sẽ chạy mã ở chính xác cùng một thứ hai, vì vậy nó là một cược an toàn mà Hiện NULL sẽ là khác nhau mỗi khi mã này được chạy. Cược an toàn mà do đó, srand sẽ rand hạt giống với một cái gì đó khác nhau mỗi thời gian duy nhất. Vì vậy, theo quy ước, khi chúng tôi muốn có một số ngẫu nhiên, chúng tôi viết dòng này, srand thời gian NULL, để cung cấp cho chúng ta một nhiều hạt giống ngẫu nhiên, và sau đó chúng tôi chạy rand, mà cho chúng ta một số ngẫu nhiên. Yeah? HỌC SINH: Bạn có thể nói những gì bạn có nghĩa là bằng hạt? Jason Hirschhorn: giống như trong - để rand sẽ chọn một số số và nó sẽ sử dụng một số công thức để đạt được điều đó. Vì vậy, nó sẽ bắt đầu với một cái gì đó và sau đó biến nó thành một cái gì đó dựa tắt của công thức đó. Nếu bạn luôn luôn cung cấp cho nó những điều tương tự, nó luôn luôn biến nó thành điều tương tự. Vì vậy, điều đầu tiên mà bạn cho nó là hạt giống. Vì vậy, bạn muốn cung cấp cho nó một cái gì đó khác nhau để bắt đầu với, và vì vậy nó sẽ biến nó thành một cái gì đó khác nhau. Và cuối cùng, dòng 20, % này được gọi là modulo, và đó là khó hiểu. Đó là cái gì đó là một chút khác nhau ở đây là bạn không thực sự có trong toán học cuộc sống thực. Nhưng về cơ bản, khi bạn có một người khổng lồ số lượng và bạn phân chia trong C, những gì xảy ra với phần còn lại? HỌC SINH: Nó được cắt ngắn. Jason Hirschhorn: Nó được cắt ngắn. Vì vậy, 20 chia cho 3 là gì? Điều đó trở lại bạn, 20 chia cho 3. Xin lỗi, 10 chia cho 3. Điều đó trả lại cho bạn? HỌC SINH: [nghe được]. Jason Hirschhorn: 10 chia cho 3 chỉ trả về 3 không 3 còn lại 1. Vì vậy, những gì 10 modulo 3 lợi nhuận chỉ là phần còn lại, 1. Vì vậy, nếu bạn muốn biết những gì 10 chia 3 thực sự là, bạn sẽ làm 10 chia cho 3, bạn sẽ nhận được 3 của bạn, và sau đó bạn sẽ làm 10 modulo 3, và bạn sẽ nhận được một 1. Vì vậy, bạn sẽ nhận ra rằng 10 chia 3 là 3, còn lại 1. Và trong dòng này, có thể là rand bất kỳ số nguyên, về cơ bản. Vì vậy, theo modulo được nói, chia nó số, đó là trong trường hợp này 5. Và nếu bạn đã bao giờ chia cho một số, số nguyên luôn luôn có được ít hơn con số đó. Vì vậy, nếu bạn đang chia cho một số 5, phần còn lại là luôn luôn có được không thông qua bốn. Đó chỉ là cách các toán hoạt động ra. Vì vậy, một số lượng lớn moduloed bởi một nhỏ hơn số sẽ luôn luôn quay trở lại còn lại và sẽ luôn luôn trở lại một số số đó là ít hơn số bạn chia. Không ai có thắc mắc về modulo, bởi vì nó sẽ đến trong rất, rất tiện dụng, vì vậy tôi muốn chắc chắn tất cả mọi người hiểu được nó? Mát mẻ. Và chúng ta đã thấy rằng chương trình này làm việc. OK, di chuyển trên. Tiếp theo, chúng ta sẽ đi vào chức năng, và chúng ta sẽ đi thông qua phần còn lại của công cụ này khá một cách nhanh chóng bởi vì tôi muốn để có được đối số dòng lệnh. Vì vậy, các chức năng cơ bản, như bạn đã thấy, hộp đen. Họ có những điều trong gọi là các thông số, họ làm điều gì đó cho họ, hoặc thay đổi chúng hoặc tạo ra một số tác dụng phụ, và cuối cùng, họ nhổ một cái gì đó, mà là giá trị trả về. Ai có thể cho tôi một lý do lý do tại sao chúng tôi sẽ sử dụng chức năng này? Bất cứ ai? Một lý do tại sao chúng tôi muốn sử dụng chức năng này? Bất cứ ai? Tôi thấy hai tay. Một lý do chính đáng là gì? Marcus? HỌC SINH: Nếu bạn phải gọi cùng đoạn mã nhiều lần. Jason Hirschhorn: OK, nếu bạn cần để gọi đoạn cùng mã nhiều lần. Jeff, bạn đã có một lý do khác? HỌC SINH: Chỉ cần để bạn có thể mã ít hơn. Jason Hirschhorn: Bạn có thể mã ít hơn. Đúng. Nếu bạn muốn làm một cái gì đó rất nhiều - trong mã trước đây, tôi có thể có viết nhận được chuỗi năm lần, nhưng một cho vòng lặp làm cho nó trông đẹp hơn và bạn phải viết mã ít hơn. Chức năng là một ý tưởng tương tự. Nếu tôi muốn làm điều tương tự rất nhiều, di chuyển nó đến một chức năng và gọi đó hoạt động mỗi lần. Điều đó sẽ làm điều đó cho bạn. Đó là một lý do tuyệt vời sử dụng chức năng. Vì vậy, giải phẫu của một hàm. Một chức năng sẽ thường trông như thế này. Nó sẽ bắt đầu với kiểu trả về, sau đó bạn sẽ nhận được tên. Nó sẽ mất các đối số, nếu không được gọi là các thông số, và bên trong những dấu ngoặc nhọn, bạn sẽ viết mã của bạn. Chúng tôi đã nhìn thấy một chức năng rất nhiều. Đó là chính. Đây là chính chồng lên rằng giải phẫu tôi đã có trước đó. Int ở đây không gì nghĩa gì? Int không có nghĩa là gì? Khi tôi viết int main (void). HỌC SINH: Loại Quay lại? Jason Hirschhorn: Xin lỗi? HỌC SINH: Kiểu trả về. Jason Hirschhorn: Int là loại trở về, chính xác. Chính trả về int. Chính là những gì? HỌC SINH: tên chức năng. Jason Hirschhorn: chính là tên của các chức năng. Chính xác. Hiệu? Khoảng trống bên trong dấu ngoặc đơn là gì? HỌC SINH: Nó không mất bất kỳ giá trị bên ngoài. Jason Hirschhorn: Vì vậy, void - đúng. Bên trong dấu ngoặc đơn, chúng tôi đặt các các tham số hoặc các đối số chức năng có, những gì diễn ra bên trong hộp đen. Khi bạn viết có hiệu lực, bạn đang nói này có gì in Vì vậy, int main khoảng trống có nghĩa là chính của không tham gia bất cứ điều gì in Bên trong dấu ngoặc nhọn, chúng tôi có một số mã, và sau đó chúng ta thấy ở cuối trở lại bằng không. Không trở lại không có nghĩa là gì? Vâng, chúng ta đã nói về kiểu trả về. Chính cần phải trả lại một int. Đó là dòng này có. Nó trả về một int, bằng không. Tất nhiên, chúng tôi đã không thấy rằng rất nhiều bởi vì trong các chương trình chúng tôi làm với các máy chúng tôi làm và các trình biên dịch chúng ta sử dụng ngày nay, bạn không cần đường dây đó. Chính là đặc biệt, đủ mà nó biết khi bạn đến cuối của chính, chỉ trở lại bằng không nếu tất cả mọi thứ diễn ra tốt đẹp. Trong thực tế, nếu một cái gì đó không suôn sẻ, chính thường sẽ trở lại một khác nhau số có nghĩa rằng một cái gì đó đã đi sai với chương trình của bạn. Vì vậy, nói chung khi bạn nhìn thấy mã số, bạn không viết lại không, nhưng đó là tốt để biết rằng nó đang xảy ra đằng sau cảnh bởi vì bất cứ khi nào bạn viết một loại chức năng, bạn sẽ cần phải bao gồm một đường trở lại. Nếu bạn đang nói tôi sẽ trả lại một int, bạn phải viết lại một cái gì đó. Nếu bạn nói trống lên đây ở đầu, khoảng trống void main, cho Ví dụ, sau đó nó không trở về bất cứ điều gì - khoảng trống có nghĩa là không có gì - do đó bạn không cần dòng trở lại. Nhưng bạn đã bao giờ viết một cái gì đó không làm mất hiệu lực cho kiểu trả về, bạn cần một dòng nói là trở lại và bạn cần phải đặt một cái gì đó có phù hợp với loại. Bất kỳ câu hỏi về điều đó? Ngọt ngào. Phạm vi. Đây là một cái gì đó chúng tôi đã đụng vào là tốt. Tất cả các biến, như chúng ta biết, có một phạm vi nhất định, và đó là cơ bản nói về nơi mà các biến có thể có hoặc có thể không được tham chiếu. Và tôi muốn nói rằng những gì xảy ra trong dấu ngoặc nhọn vẫn bên trong dấu ngoặc nhọn. Vì vậy, ví dụ, nếu chúng ta nhìn vào mã này, chúng tôi xác định một biến toàn cầu bên ngoài của chính, int a, lên đây ở đầu trang. Chúng tôi đang gọi điện thoại khác int một bên trong chính. Chúng tôi có một số dấu ngoặc nhọn hơn, và chúng tôi đang gọi điện thoại khác int a. Chúng tôi có ba của một trong mã. Đây không phải là điều tương tự. Tôi đã tạo ra ba biến khác nhau. Sau đó, trong những xoăn bên trong niềng răng, tôi nói một = 4. Đó là nói về, các đầu tiên, thứ hai, hoặc một trong các thứ ba? HỌC SINH: Các thứ ba. Jason Hirschhorn: Nó nói khoảng một phần ba. Tất cả những một thực sự có thể nói về đặc biệt này Ví dụ vì phạm vi của họ tất cả đi vào các dấu ngoặc nhọn trong cùng. Tuy nhiên, khi bạn gọi điều tương tự tên, có điều gì đó được gọi là ẩn. Vì vậy, bạn chỉ đối phó với hoặc sửa chữa hoặc sử dụng biến gần đây nhất, hoặc một gần nhất với bạn. Vì vậy, trong đây, một phần ba này là gần nhất để dòng, a = 4, vì vậy nó ảnh hưởng đến một phần ba. Và dòng cuối cùng, a = 2, điều mà một là mà nói về, lần đầu tiên, thứ hai, hoặc thứ ba một? HỌC SINH: Thứ hai. Jason Hirschhorn: Nó nói về một thứ hai. Tất nhiên, một phần ba là gần nhất với nó trong các mã, nhưng thứ ba một không tồn tại bên ngoài những dấu ngoặc nhọn. Một khi bạn nhận được để mà đóng xoăn cú đúp, nó giống như nó đã biến mất, cơ bản. Vì vậy, chỉ có hai bạn đã để lại là những đầu tiên hai, và tất nhiên, bây giờ nó là gần nhất với thứ hai. Vì vậy, đó là một điều tốt để nhớ về phạm vi. Ví dụ, tôi chắc chắn bạn đã gặp phải này trong một làm trong khi vòng lặp. Nếu bạn khởi tạo trong biến các bạn trong khi vòng lặp và sau đó bạn cố gắng truy cập nó bên ngoài, bạn có thể có một số cảnh báo như thế, điều này biến không tồn tại. Đó là bởi vì các ý tưởng phạm vi, rằng mọi thứ chỉ tồn tại bên trong các dấu ngoặc nhọn. Xoăn niềng răng giống như một cái ôm khổng lồ bạn đang đưa ra mã của bạn, là một cách suy nghĩ về nó. Vì vậy, đây là một chức năng, một cái gì đó cho các bạn để mã, hellofunction.c. Chúng ta sẽ bỏ qua cho bây giờ, nhưng đây là cái gì tôi khuyến khích bạn thực hành một mình. Viết một chương trình trong đó các cuộc gọi chính một chức năng in ra một chào cho người sử dụng. Nó chủ yếu dùng hello thế giới và tóm tắt rằng printf vào một chức năng. Nhưng chúng tôi sẽ không làm điều đó ngay bây giờ bởi vì chúng ta không có nhiều thời gian lại như tôi đã có thể thích. Vì vậy, khai báo hàm. Chúng tôi đã nhìn thấy điều này trước khi là tốt. Nếu bạn muốn viết một chức năng, bạn cần phải để cho các máy tính biết và chính biết rằng nó tồn tại. Vì vậy, những gì chúng tôi đang ở trên chính, chúng tôi viết kiểu trả về, tên, và các thông số, và sau đó xuống dưới chính, ở đây, chúng tôi thực sự sao chép dòng và sau đó viết mã thực tế. Vì vậy, theo cách này, nếu bạn gọi chức năng trong chính ở phía trên, chính biết rằng xin chào tồn tại, ví dụ, nếu tôi để gọi xin chào, và sau đó có vẻ với việc thực hiện xuống dưới đây. Những gì sẽ xảy ra nếu tôi không bao gồm này dòng lên hàng đầu, làm mất hiệu lực hello (void)? Nếu tôi không bao gồm dòng này và kêu gọi chính xin chào, tôi là sẽ nhận được một lỗi. Tôi sẽ nhận được một lỗi bởi vì trình biên dịch không biết rằng điều này tồn tại. Điều này cũng tương tự như lý do tại sao chúng tôi làm # bao gồm cs50.h. Những gì cơ bản cs50.h đang làm là đưa được chuỗi lên đó. Nó được đặt int ở đó. Nó đặt tất cả những chức năng nguyên mẫu trước khi chính để khi bạn gọi cho họ trong chính, chính biết rằng những điều này tồn tại. Đó là những gì các tập tin h. Làm. Và vì vậy nếu bạn đang đi để làm của riêng bạn chức năng, bạn đã có để đảm bảo bạn đặt nguyên mẫu mà trên đó. Bất kỳ câu hỏi về điều này cho đến nay? Đối số dòng lệnh. Đây là những gì chúng ta sẽ kết thúc trên, và sau đó hy vọng chúng tôi sẽ ép trong một số pset. Tôi không biết nếu chúng ta sẽ có thể ép trong đó bởi vì thời gian, nhưng với các bạn những người đang ở đây, và nếu bạn kẻ muốn nói sau khi cho một chút, chúng tôi có thể đi qua nó bên ngoài. Nhưng chúng ta sẽ kết thúc với đối số dòng lệnh trong 15 phút cuối cùng. Chúng ta tỉnh táo, Michael? Bạn đang tỉnh táo? Tốt. Tôi không biết nếu bạn ngủ với đôi mắt của bạn đóng cửa. Nó sẽ là khó khăn. Đối số dòng lệnh. Đó là một cách để vượt qua thông tin vào một chương trình. Cuối cùng, chúng ta sẽ gặp phải những người khác. Nhưng về cơ bản, chúng ta sẽ dừng lại viết int main (void) nếu chúng ta muốn có một số đối số dòng lệnh. Chúng ta sẽ viết điều này gọi là int main (int argc, chuỗi argv, dấu ngoặc đơn. Đó là khó hiểu. Đó là rất nhiều thư mà không phải là trong người Anh, vì vậy chúng ta sẽ giải nén chúng ngay bây giờ. Argc là viết tắt của số đối số - và một lần nữa, tất cả những sẽ có sẵn trực tuyến - và đó là số lượng các đối số. Argv là viết tắt của véc tơ tham số, và đó là những lập luận của mình. Đó là một mảng của chuỗi. Chúng tôi đã thực sự nhìn thấy một mảng các chuỗi trước khi ngày hôm nay. Chúng tôi tạo ra một trong những cuối cùng chương trình chúng tôi được mã hóa. Vì vậy, đây là một ví dụ. Tôi viết. / Ohai CS50 phần trên dòng lệnh của tôi. Argc trong trường hợp này bằng 3. Argv khung 0 là ohai, argv khung 1 là CS50, argv khung 2 là phần. Một lần nữa, argc là số lượng các đối số, và chuyến đi bạn lên một chút bit, chúng tôi luôn luôn đếm tên của chức năng như là đối số đầu tiên. Vì vậy, trong trường hợp này, có ba tham số, tên của các chức năng và sau đó hai mà tôi đánh máy in Tiếp theo, chúng ta sẽ tiết kiệm những lập luận mình trong argv. Và một lần nữa, cũng giống như chúng ta đã thấy trước đây, chúng tôi đã làm này trong chương trình cuối cùng chúng tôi được mã hóa. Bạn có thể di chuyển qua các mảng argv và có được những chuỗi. Đó chính là những gì chúng ta làm ở chương trình kết thúc cuối cùng của chúng tôi. Chúng tôi chọn một tên ngẫu nhiên và sau đó đi đến tên khung bất cứ điều gì và in ra các chuỗi nằm ở đó. Ngày đầu chỉ là mảng một, bởi vì dây chính họ là mảng, như nói chuyện về, bạn có thể có các mảng của mảng, đó là về cơ bản những gì argv là. Một cách để bạn có thể suy nghĩ về đây là các hàng và cột. Tôi có thể vẽ được ngay bây giờ. Vì vậy, argv - đó là không tẩy xoá. Chúng ta hãy vẽ dưới ohai. Vì vậy, nếu tôi đã viết trong, phần ohai CS50, Tôi sẽ cắt ngắn phần cho ví dụ này. Nhưng về cơ bản, tôi đa chiều mảng, ohai CS50, chúng ta sẽ làm phái. Vì vậy, ở đây, tôi có thể truy cập - nếu tôi chỉ cung cấp cho một số argv - điều này là sai. Có gì sai trong sơ đồ này? HỌC SINH: Bắt đầu từ số không. Jason Hirschhorn: Nó nên bắt đầu với số không. Tôi nên có lẽ cũng xoay nó, nhưng kể từ khi tôi đã vẽ nó trên, tôi sẽ để nó ở đó cho bây giờ. Nhưng nó bắt đầu từ số không. Đó là đúng. Tôi xin lỗi nếu điều này là nhỏ. Các bạn có thể loại nhìn thấy? Vì vậy, nếu tôi làm argv 0, tôi sẽ nhận được tất cả ohai. Nếu tôi làm argv 1, tôi sẽ nhận được tất cả các CS50. Nếu tôi làm argv 2, tôi sẽ nhận được tất cả các giáo phái. Nhưng bây giờ, như chúng tôi đã nói, dây là mảng mình. Vì vậy, những gì tôi có thể làm là tôi có thể điều trị này như một mảng đa chiều, và tôi có thể làm một cái gì đó dọc theo dòng argv 0, 0, mang đến cho tôi chỉ là nhân vật 0. Argv 0, 1, mang đến cho tôi chỉ h. Argv 1, 3, mang đến cho tôi chỉ 0 này xuống đây trong CS50. Như vậy bởi vì dây tự được mảng, chúng ta đặt mà trong một mảng khác. Bây giờ chúng tôi có mảng của mảng, và chúng tôi có thể chỉ số vào mảng đầu tiên của chúng tôi và sau đó chỉ số vào mảng thứ hai của chúng tôi. Và như bạn mong đợi, chúng tôi làm điều đó bởi chỉ cần đặt hai - chúng tôi làm các dấu ngoặc vuông chỉ ngay bên cạnh nhau. Vì vậy, trong ví dụ này, argv 1 là CS50 và argv 1, 2, như chúng tôi đã nói, chỉ là 5. Không ai có thắc mắc về mảng đa chiều? Các bạn đang làm tuyệt vời. Ngọt ngào. Vì vậy, chúng tôi có một chương trình khác ngay tại đây, và đây là điều cuối cùng chúng tôi sẽ làm ngay bây giờ. Vì vậy, tôi muốn bạn viết một chương trình có đầy đủ tên của người dùng, và chỉ có hai hai đối số dòng lệnh, và cuối cùng, in ra một lời chào đến các người sử dụng bao gồm tên đầu tiên của họ. Vậy tại sao bạn không đi ba hoặc bốn phút để làm điều này, và sau đó chúng tôi sẽ đi hơn nó như là một nhóm, và sau đó chúng tôi sẽ thúc? Và một lần nữa, ở đây, khi chúng ta nói có một tên đầy đủ của người sử dụng theo các mô tả của vấn đề này, nó phải là lệnh đối số dòng, không sử dụng được chuỗi. Yeah, Marcus? HỌC SINH: Vì vậy, khi bạn nói hai lệnh đối số dòng, đó là ngoài . các / chạy, hoặc - Jason Hirschhorn: Tốt câu hỏi. Làm, bao gồm cả. / Run, ba đối số dòng lệnh. Hoặc bao gồm cả / cá nhân., Trong trường hợp này, bởi vì đó là tên của tập tin này. Vì vậy, argc sẽ là ba. Nhưng tôi muốn chỉ có hai đối số cho chương trình. Tôi nên xác định đó. Tôi sẽ làm cho sự thay đổi đó trước khi tôi gửi những điều này và gửi chúng đến với bạn. HỌC SINH: Nếu bạn có một tên đệm? Jason Hirschhorn: Nếu bạn có một trung tên, bạn đang trên may mắn. Tôi xin lỗi. Hoặc nếu bạn chỉ đi của Shakira, bạn cũng gặp may. Yeah? HỌC SINH: Vì vậy, khi người dân không có cs50.h, họ xác định argv như char sao argv? Hoặc là nó vẫn được gọi là chuỗi argv? Jason Hirschhorn: Có. Vì vậy, chuỗi, một lần nữa, chúng ta che giấu hơn những gì chính xác đang xảy ra ở đó. Điều đó sẽ được giải nén có thể Thứ tư, nhưng ngay sau đó. Nó giống như bánh xe đào tạo. Bởi vì về cơ bản, đó là điều tương tự. Vì vậy, chúng ta hãy một phút để chương trình này, và sau đó chúng tôi sẽ đi qua nó như là một nhóm, và sau đó như tôi đã nói, quấn lên. Và tôi nghĩ rằng họ vẫn đang thêm kẹo, nên các bạn hy vọng sẽ có đó, hoặc xin đi mà. Xin lỗi nếu bạn vẫn còn đang viết, nhưng tôi muốn nhảy vào và chúng tôi có thể hoàn thành nó với nhau. Vì vậy, tôi đã viết trong, # bao gồm cs50.h, # bao gồm stdio.h. int main (void), xoăn cú đúp, xoăn cú đúp, trong ba dòng giả, có tên đầy đủ của người dùng, hai và chỉ có hai dòng lệnh đối số, in ra một lời chào đến các người sử dụng bao gồm tên đầu tiên của họ. Vì vậy, đầu tiên, hãy tên đầy đủ của người dùng. Ai có thể giúp tôi có tên đầy đủ của người dùng? Làm thế nào để làm phần đó? Các bạn đã làm điều đó một phần đầu tiên? Có tên đầy đủ của người dùng. Vâng, cho rằng một dòng lệnh lập luận, những gì tôi nên viết? Tôi nên thay đổi về khai báo hàm của tôi? HỌC SINH: Bạn không muốn nó không có giá trị nữa. Jason Hirschhorn: Chính xác. Tôi không muốn nó bị vô hiệu. Tôi muốn những gì nó được? HỌC SINH: argc Int. Jason Hirschhorn: Int argc. HỌC SINH: String argv. Jason Hirschhorn: String argv. HỌC SINH: giá đỡ, khung. Jason Hirschhorn: giá đỡ, khung. Đó là chính xác, và đó là thực sự như thế nào tôi sẽ nhận được tên đầy đủ của người dùng. Họ sẽ đặt nó ở đó. Vì vậy, một trong đó là thực hiện. Vì vậy, bây giờ tôi muốn hai và chỉ hai đối số dòng lệnh. Vì vậy, Noah, những gì là một cách để tôi có thể kiểm tra số lượng lệnh đối số dòng thì đã sao? HỌC SINH: Bạn làm một tuyên bố nếu. Jason Hirschhorn: Nếu tuyên bố, chính xác. Tôi muốn gì là điều kiện? HỌC SINH: Nếu argc lớn hơn 3. Jason Hirschhorn: Nếu argc lớn hơn 3. Nếu argc lớn hơn 3, tôi phải làm gì? HỌC SINH: Quay lại 1. Jason Hirschhorn: Trở về 1. Để đảm bảo tôi có hai và chỉ có hai? HỌC SINH: số Nếu argc lớn hơn Ít hơn 2 3. Jason Hirschhorn: Nếu argc lớn hơn 3 và argc là ít hơn 2. Một cách để tôi có thể viết này chỉ là những gì một dòng, hoặc không sử dụng mà và toán tử? HỌC SINH: Nó không phải bằng 2. Jason Hirschhorn: Nếu argc không bằng 2. Chính xác. Vì vậy, nếu argc là không bằng 2, mà sẽ cung cấp cho tôi chương trình này, cá nhân, khi tôi chạy nó, và sẽ cung cấp cho tôi bao nhiêu đối số dòng lệnh? Bao nhiêu tôi sẽ kiểm tra? Xin lôi. Hãy để tôi reword đó. Nếu argc = 2, bao nhiêu điều đã làm người sử dụng viết vào dòng? HỌC SINH: Một. Jason Hirschhorn: Chỉ cần một. Vì vậy, trước khi, bạn đã đúng, Noah. Những gì tôi thực sự cần phải đặt ở đó? HỌC SINH: Điều đó tương đương 3. Jason Hirschhorn: argc không bằng 3. Tôi muốn bằng 3 vì tôi muốn cá nhân cộng với hai người kia. Vì vậy, nếu argc không bằng 3, trở về 1. Tại sao bạn nói trở về 1? HỌC SINH: Bởi vì đó có nghĩa là nó sai. Jason Hirschhorn: Điều đó có nghĩa là nó sai, và những gì mà sẽ làm gì? HỌC SINH: Re-nhắc nhở người dùng. Jason Hirschhorn: Nó sẽ bỏ các chương trình, vì vậy nó sẽ phải chạy một lần nữa, nhưng chúng tôi không có bất cứ điều gì tại đây để yêu cầu họ một lần nữa. Tôi đã không yêu cầu đó. Vì vậy, đó là chính xác. Trở về 1 chỉ bỏ chương trình. Tuyệt vời. Và in ra một lời chào cho người sử dụng bao gồm tên đầu tiên của họ. Làm thế nào tôi có thể làm điều đó? Anna? HỌC SINH: printf. Jason Hirschhorn: printf. HỌC SINH: (" Jason Hirschhorn: ( HỌC SINH: "hello Jason Hirschhorn: "hello HỌC SINH:% s Jason Hirschhorn:% s HỌC SINH: / n Jason Hirschhorn: / n HỌC SINH: ", Jason Hirschhorn: ", HỌC SINH: argv Jason Hirschhorn: Xin lỗi? HỌC SINH: argv Jason Hirschhorn: argv HỌC SINH: Dấu ngoặc vuông 1. Jason Hirschhorn: Dấu ngoặc vuông? HỌC SINH: 1. Jason Hirschhorn: 1. HỌC SINH: Và) dấu chấm phẩy. Jason Hirschhorn:) dấu chấm phẩy. Chúng ta hãy chạy này. Làm cho cá nhân. / Cá nhân.. Nó chỉ bỏ thuốc lá. Tại sao nó lại bỏ thuốc lá? HỌC SINH: Bạn đã không đặt bất kỳ đối số. Jason Hirschhorn: Tôi không đặt bất kỳ đối số nhập Sẽ rất tốt. Các bạn đóng đinh nó. Vì vậy, một lần nữa, bạn đi vào argv và bạn kiểm tra tại argc đầu. Đó là hai quan trọng điều cần nhớ. Vì vậy, trong hai phút cuối cùng của chúng tôi trước khi chúng tôi để lại, chúng tôi sẽ không nhận được để pset hai, nhưng như tôi đã nói, nếu bạn muốn ở lại sau khi trong 10 phút, tôi sẽ hạnh phúc khi anh đi hơn với các bạn logic cho các bài tập. Chúng tôi đã có rất nhiều để trang trải hôm nay vì vậy tôi đã không nhận được với họ. Nói chung, tôi muốn bao gồm là lúc kết thúc. Vì vậy, nếu bạn muốn gắn bó xung quanh, thanh xung quanh trong 10 phút. Chúng tôi sẽ làm điều đó. Sau đó, như tôi đã đề cập ở phần đầu, pset không và một, chúng tôi sẽ nhận được rằng thông tin phản hồi lại với bạn sớm càng tốt. Mục đích là để có được pset một thông tin phản hồi, phần ý kiến, trước khi pset hai là do. Vì vậy, nếu bạn thực hiện một số sai sót hoặc phong cách, mọi thứ có thể tốt hơn, bạn sẽ có những thông tin đó để bạn sẽ không làm những điều tương tự trong pset hai. Và sau đó trong tương lai, bạn sẽ nhận được tất cả thông tin phản hồi pset và bình luận của bạn trở lại trước khi một kế tiếp theo. Cuối cùng, nếu tôi có thể đặt trong một cắm cho thông tin phản hồi. Đây là phần đầu tiên của bạn. Đó là phần đầu tiên của tôi giảng dạy trong năm nay. Đến đó. Viết các công cụ, tốt và xấu, và tôi sẽ sử dụng nó để thực hiện phần tốt hơn thời gian tới. Và cuối cùng, một lần nữa, nếu bạn cần bất cứ điều gì, cho tôi biết. Tôi hạnh phúc hơn để giúp đỡ các bạn. Nếu bạn chỉ muốn kẹo, tôi sẽ có thêm kẹo. Tôi rất vui khi mang lại cho bạn. Điều này là có được một khóa học tuyệt vời. Đây là một trong những, nếu không yêu thích của tôi Tất nhiên, tôi đã thực hiện trong toàn bộ cuộc sống của tôi, và tôi hy vọng nó sẽ là tuyệt vời cho bạn. Vì vậy, tôi muốn làm tất cả mọi thứ trong khả năng của tôi để làm cho nó là tuyệt vời cho bạn. Tôi sẽ gửi một email nếu bạn trong phần của tôi hoặc Noah, và sẽ cố gắng sắp xếp với mỗi các bạn một thời gian để kiểm tra trong qua vài tuần tới để tôi có thể có được một ý nghĩa của những gì nền CS của bạn, và nó cũng sẽ giúp tôi thiết kế riêng những phần để phù hợp hơn với nhu cầu của bạn. Vì vậy, đó là những gì tôi đã đã xếp hàng. Một lần nữa, tôi sẽ thấy bạn bên ngoài nếu bạn muốn có mặt ở đó. Đây là tuần hai phần. Cảm ơn các bạn rất nhiều.