[MUSIC CHƠI] ALLISON BUCHHOLTZ-AU: Hey tất cả mọi người. Chào mừng bạn đến đầu tiên của bạn phần CS50 chính thức. Như bạn có thể, xem đây là phần CS50-như, chỉ cần để kéo lên chương trình nghị sự của chúng tôi cho ngày hôm nay. Vì vậy, tôi là ai, như tôi là chắc chắn tất cả các bạn đang tự hỏi. Tôi TF của bạn. Tôi không phải là chỉ là một sinh viên ngẫu nhiên những người mạo danh TF của bạn. Và tôi sẽ phải đi qua loại có bộ phận sẽ chảy, mong đợi của chúng ta có, nguồn lực, vv và vv. Chúng ta sẽ nói về mảng, ASCII chức năng, đối số dòng lệnh, và nó không phải ở đây, nhưng Tôi cũng sẽ được giúp đỡ bạn loại suy nghĩ pset tiếp theo của bạn trong tuần này. Mà tôi chắc chắn tất cả các bạn sẽ đánh giá cao. Vì vậy, đầu tiên question-- tôi là ai, ngoài TF cởi mở của bạn ở đây. Tôi Alison Buchholtz-Au. Đây là năm thứ hai của tôi TFing CS50. Tôi cũng TF CS51 vào mùa xuân. Bạn có thể thấy một lần nữa có nếu bạn quyết định lấy nó. Tôi cũng là một PAF, vì vậy bất kỳ Freshmen-- và nếu bạn không phải là sinh viên năm nhất, đây là năm thứ ba của tôi như là một đồng tư vấn. Tôi đang rất thành thạo trong tư vấn cho bạn về cuộc sống và các khóa học trong CS và không nằm trong CS. Tôi là một khoa học máy tính Bộ tập trung. Tôi là một cấp cao trong Adams House, ngôi nhà tốt nhất. Và trước khi tôi chuyển sang CS của tôi Sinh viên năm hai mùa xuân, Thực sự tôi là một kỹ sư y sinh học. Tôi đã đi đến Med trường. Tôi sẽ là một bác sĩ phẫu thuật chấn thương. Và điều đó đã hoàn toàn thay đổi kể từ khi tôi mất CS50. Tôi đã khoá học Fall Sinh viên năm hai của tôi. Đó là giới thiệu đầu tiên của tôi để CS bao giờ hết. Tôi là một trong số 78% số người bạn đã không kinh nghiệm đến, và nó hoàn toàn thay đổi cuộc sống của tôi. Và bây giờ tôi đang làm việc tại Microsoft, và TF đáng yêu của bạn. Và CS50 có lẽ là một những kinh nghiệm tốt nhất mà tôi đã có ở đây tại Harvard-- cả hai tham gia các lớp học và có thể giúp đỡ dạy học sinh như bạn. Vì vậy, tôi thực sự vui mừng rằng bạn là tất cả ở đây. Trong trường hợp bạn đã ở muộn, có kẹo, mà bạn nên cảm thấy tự do đến lấy, hoặc gửi người khác để lấy nó cho bạn. đó là OK. Tôi không muốn ăn mà. Phòng của tôi có đủ sô cô la, vì vậy y'all nên cố gắng và kết thúc. Tôi biết có 100 miếng, nhưng cũng giống như, 04:00 vào ngày thứ hai, Tôi nghĩ rằng tất cả mọi người có thể sử dụng một số đường. Vì vậy, tất cả các bạn là ai chính thức trong phần của tôi nên đã nhận được một email từ tôi với số điện thoại của tôi, email address-- cảm thấy tự do để thêm tôi trên Gchat, cảm thấy tự do để thêm tôi trên Facebook, và cũng để phần còn lại của bạn, bạn có thể gửi email cho tôi ngay tại đây. Có hai của H. Tất cả mọi người luôn luôn làm giống như hai L's hoặc hai của C. Hai trong tên cuối cùng H. Nếu không nó sẽ trả lại, và Tôi sẽ không nhận được email của bạn. Vì vậy, cảm thấy tự do để gửi email cho tôi, liên hệ với tôi bất cứ lúc nào. Tôi không thể có được trở lại quý vị trong vòng 24 phút, nhưng tôi hứa sẽ quay trở lại cho bạn trong vòng 24 giờ. Nếu bạn gọi cho tôi nửa giờ trước pset của bạn là do bạn là như thế nào, Tôi không có ý tưởng những gì tôi đang làm Allison. Giúp tôi. Tôi sẽ bình tĩnh bạn xuống, nhưng vào cuối ngày, nếu bạn đang gọi điện thoại cho tôi một nửa giờ trước pset của bạn là do không có gì bằng văn bản, Tôi sẽ như thế nào, tốt, có thể đó là thời gian để sử dụng ngày cuối. Vì vậy, tôi sẽ trả lời cho tất cả các bạn yêu cầu một cách rất kịp thời. Điện thoại của tôi thường là gắn liền với bàn tay của tôi. Tôi thường trả lời nhiều nhanh hơn 24 giờ, nhưng tôi chỉ có thể đảm bảo một phản ứng 24 giờ. Được rồi. Vậy tại sao chúng ta ở đây? Ngoài ra, nếu bạn có thắc mắc tại bất cứ lúc nào, xin vui lòng cho tôi biết. Tôi nói chuyện rất nhiều. Tôi nói nhanh, nhưng xin vui lòng cảm thấy tự do để gây cản trở tôi. Nó mang lại cho tôi thở phòng là tốt. Vì vậy, phần là một thời gian để chúng tôi thực sự chỉ lặn trong, có được một số kinh nghiệm thực tiễn, để đi qua các chủ đề mà chúng tôi đề cập trong lớp học hoặc trong các tài liệu nghiên cứu chúng tôi khuyên bạn nên đến với bạn trực tuyến. Và chúng ta sẽ thực sự đi qua một số trong những nguồn tài nguyên trong một chút. Vì vậy, một số ghi chú vào phần hỗ trợ. CS50-- một trong những điều mà làm cho nó là một trong các lớp học yêu thích của tôi là cảm giác mà bạn sẽ không bao giờ một mình. Chúng tôi có một đội ngũ nhân viên hơn 100 những người đang ở đây để giúp bạn. Chúng tôi có giờ văn phòng Thứ Hai đến thứ Năm. Vì vậy, có rất nhiều người yêu lớp chỉ nhiều như tôi làm và những người đang thực sự ở đây bởi vì họ muốn được ở đây. Hầu hết chúng ta là sinh viên, và điều này giống như một lớp thứ năm ngoài với phần còn lại của công việc của chúng tôi. Và đó là rất nhiều công việc, nhưng chúng tôi làm điều đó bởi vì chúng tôi yêu nó, và chúng tôi thực sự yêu thương để dạy cho bạn và giúp chia sẻ hứng thú của chúng tôi cho chủ đề này và lớp này. Vì vậy, hãy tận dụng lợi thế. Hãy đến nói chuyện với chúng tôi. Tôi cảm thấy cô đơn khi học sinh của tôi không nói chuyện với tôi, vì vậy nếu bạn muốn, đi chơi với tôi. Nó sẽ là tuyệt vời. Vì vậy, phần là rõ ràng một trong những điều lớn nhất của bạn. Chúng tôi sẽ đi qua những điều mà bạn đã học trong bài giảng, làm một số ví dụ ngắn khi chúng tôi có thời gian, và nói chung loại được một ý tưởng về những điều bạn nên suy nghĩ về cho vấn đề của bạn thiết lập. Cách Shorts-- người thực sự nhiều xem đoạn video từ đầu của bạn ngắn? Bất cứ ai cũng nhận ra tôi? Vì vậy, những người rất tuyệt vời. Bạn chắc chắn nên xem những người. Rất nhiều công việc đã được đưa vào họ. Và họ chỉ có nghĩa là phải bite-size miếng cho bạn chỉ cần xem trong ba hoặc bốn phút và có được một hiểu rõ hơn về một khái niệm. Đi bộ như thế nào throughs-- nhiều người đã xem đi bộ-throughs cho những người trước đây? Zamyla là tuyệt vời, phải không? Giống như, tôi muốn tôi là Zamyla đôi khi. Vì vậy, chắc chắn sử dụng đi bộ thuận của bạn. Cô ấy sẽ phá vỡ nó xuống thành miếng nhỏ, cắn-kích thước. Và khi bạn có những lớn thông số kỹ thuật từ bộ vấn đề của bạn, nó sẽ được thực sự quan trọng để có thể chỉ cần tìm một nơi nào đó để bắt đầu làm việc và từ từ thông qua nó. Được rồi, chúng tôi cũng có Study50, mà là study50.harvard.edu, tôi tin. Bạn chỉ có thể Google nghiên cứu, và nó sẽ đi lên. Đây là một trong những nguồn lực tốt nhất chúng ta có. Đó là PowerPoints với các ghi chú và thực hành các vấn đề cho bạn với các giải pháp mà bạn thực sự có thể đi bộ qua. Vì vậy, nếu bạn muốn thực hành nhiều hơn, nhiều hơn chúng tôi trong các phần hoặc nhiều hơn hơn bộ vấn đề của bạn, đây là thực sự là một nơi tôi khuyến khích bạn đi. Nó được xây dựng bởi mùa hè năm ngoái một số bạn bè thực sự tốt của tôi. Và thật tuyệt vời. Trong thực tế, rất nhiều trong các slide rằng tôi sẽ được sử dụng cho mục sẽ đến từ Study50. Vì vậy, rất nhiều các TF sử dụng nó. Và cuối cùng, như tôi nêu trên, giờ hành chính. Nếu bạn đang gặp rắc rối với bài tập về nhà, bạn gặp rắc rối với một khái niệm, đến giờ làm việc. Đi đầu trong tuần này nếu như bạn có thể. Nhận ra đến quad, bởi vì nó là loại xa. Không ai thích đi bộ ra khỏi đó. Nhưng đó là lợi thế của bạn, bởi vì sau đó bạn sẽ có tất cả những TFs, [Không nghe được] vây quanh bạn. Và đặc biệt là bây giờ, chỉ là một tip, thứ Năm rất lạnh ngay bây giờ trong Mather vì psets của bạn sẽ hết hạn vào ngày thứ Năm. Và hiểu biết muốn sử dụng ngày cuối của bạn chưa. Vì vậy, nếu bạn đang có rắc rối với các khái niệm, có rất nhiều người TF đang có để giúp bạn. Vì vậy, đi ra để Mather hôm thứ Năm. Nếu bạn muốn nhìn thấy tôi, Tôi sẽ có mặt ở đó. Tôi thường làm bài tập về nhà của riêng tôi, bởi vì không ai muốn giúp đỡ của tôi. Vì vậy, đến gặp chúng tôi. Gặp chúng tôi nửa chừng. Vì vậy, có bao nhiêu người đã tham dự giảng dạy hoặc xem nó trực tuyến? Có bao nhiêu người đã đến siêu phần tuần trước? Cool. Đó thực sự là một số lượng hợp lý. Làm thế nào nhiều bạn đã đọc của bạn spec cho tuần này, cho pset của bạn? Ooh, tôi tự hào về các bạn! Nhiều kẹo cho y'all. Tốt, vì vậy những gì chúng tôi có nghĩa "Gặp chúng tôi nửa chừng," là phần đó là thực sự chỉ sẽ là siêu hữu ích cho bạn nếu bạn đi trong khi đọc của bạn đặc điểm kỹ thuật cho pset của bạn. Bởi vì khi tôi đi qua một cái nhìn tổng quan những điều bạn cần phải tìm ra cho, nó sẽ không làm cho càng nhiều ý nghĩa nếu bạn không biết vấn đề của bạn thiết lập sẽ được yêu cầu bạn phải làm. Nếu bạn không đến phần, rõ ràng Tôi không thể là hữu ích cho bạn. Tôi sẽ không để mất nó nếu cá nhân bạn không đến phần của tôi ngay bây giờ, nhưng chắc chắn bạn nên. Nếu bạn không thể, xem chúng trực tuyến. Họ có một lý do. Mine sẽ được quyền ở đó. Như bạn thấy, chúng ta đang được ghi lại, do đó, nó sẽ có ngay cho các bạn. Cũng như vậy, sẽ lectures-- đó là rõ ràng nơi bạn đang nhận được bắt đầu của tài liệu của bạn ở đây. Vì vậy, tôi chắc chắn sẽ cố gắng và giúp bạn nhiều như tôi có thể, nhưng tôi chỉ có thể gặp bạn cho đến nay. Bạn cần phải loại gặp chúng tôi nằm ở đó. Grading-- như vậy, tất cả các bạn người nhận được một email từ tôi, bạn là phần chính thức của tôi. Tôi sẽ được phân loại psets của bạn. Và tôi chỉ muốn nói, một điều mà bạn thực sự nên chú ý đến là những ý kiến. Các ý kiến ​​hữu dụng hơn hơn số điểm thực tế chúng tôi cung cấp cho bạn. Và các ý kiến ​​được thực sự nơi tôi dành nhiều thời gian của tôi khi tôi chấm điểm. Vì vậy, tôi sẽ đánh giá cao nếu bạn đọc chúng. Và họ thực sự như thế nào bạn đang đi để tìm hiểu thêm về thiết kế và phong cách và điều đó là một chút ít cắt và khô. Vì vậy, thực sự chú ý những ý kiến. Nếu bạn có câu hỏi về họ, hoặc câu hỏi về điểm số của bạn, hãy đến nói chuyện với tôi hoặc trước khi phần, Tôi có lẽ sẽ được treo ra ở sảnh, hoặc sau đó. Nếu bạn muốn lên lịch một một ngày-các cuộc họp về cách bạn có thể giúp cải thiện sau bộ vấn đề, chỉ cần cho tôi biết. Và sau đó chỉ cần một vài lời khuyên cho các bạn. Vì vậy, một trong những điều lớn nhất Tôi luôn luôn nhấn mạnh mục của tôi khi bạn đang học tập thế nào để mã là để viết những điều trên giấy đầu tiên. Nếu bạn có một kế hoạch trò chơi cho nơi mã của bạn cần phải đi và những gì nó cần phải làm và nó bị hỏng xuống vụn của giả code bạn đã viết ra, bạn sẽ được ít hơn có khả năng làm cho các lỗi cú pháp hoặc tạo ra một vòng lặp nếu mà không có gì khác. Nếu bạn biết nơi bạn đang đi tổng thể, bạn ít có khả năng để làm cho các nhỏ những sai lầm mà đôi khi sẽ đưa bạn giờ để sửa chữa, bởi vì bạn đang như thế nào, nơi tôi bị mất khung này? Ngày lưu ý rằng, hãy sử dụng Style50. Đặc biệt là khi bạn đang đi giờ hành chính, nếu mã của bạn là tất cả chuyển sang một bên, nó là chính sách nhiên chúng tôi có thể nói, sửa chữa nó để nó trông giống như Style50 nói nó phải, và sau đó chúng tôi sẽ giúp bạn. Vì vậy, nó sẽ làm cho cuộc sống của bạn dễ dàng hơn. Nó sẽ làm cho cuộc sống của chúng tôi dễ dàng hơn. Tất cả mọi người hạnh phúc hơn. Mọi người đều nhận được điểm số cao hơn. Mà không phải là tất cả những gì chúng tôi muốn? Vì vậy, viết những điều trên giấy trước bạn đã bao giờ chạm vào máy tính của bạn. Nói những điều trên ở mức cao, và chắc chắn rằng bạn biết nơi bạn đang đi. Và nếu bạn không chắc chắn, ngồi xuống với một người nào đó và đi bộ chúng thông qua từng bước những gì mã của bạn là phải làm. Và chín trên 10 lần, bạn sẽ có như, oh, tôi quên mất một điều kiện if hoặc tôi quên một dấu chấm phẩy đây hoặc Tôi đang cập nhật sai biến này. Vì vậy, những lời khuyên của tôi cho sự thành công. Vì vậy, kể từ khi khoảng một nửa số bạn nhìn như bạn tham dự siêu phần, Tôi chỉ cần đi đến rất một thời gian ngắn đi qua các vòng, mà không phải là trong chương trình nghị ban đầu của chúng tôi. Nhưng họ có thực sự quan trọng. Và vì vậy tôi sẽ loại tốc độ thông qua những trước khi chúng tôi nhận được vào phần thực tế của chúng tôi. Trước khi tôi làm điều đó, đang có bất kỳ questions-- hậu cần, cá nhân, là có bất cứ điều gì khác mà bạn muốn để biết về tôi hoặc về phần hoặc lớp học nói chung? Tất cả tốt? OK, mát mẻ. Đáng yêu. Vì vậy, loops-- các bạn nên tất cả nhận ra những miếng từ đầu. Vì vậy, các vòng lặp là về cơ bản chỉ một cách để chúng tôi làm điều gì đó một số số lần, số lặp đi lặp lại hành động dựa trên một số điều kiện. Vì vậy, chúng tôi có ba loại khác nhau. Chúng tôi có cho vòng lặp, trong khi, và do-while. Vì vậy, cho loops-- chúng tôi chỉ có một rất bố trí chung, đây là một vòng lặp for. Và điều này là rất tốt cho khi bạn biết làm thế nào nhiều lần một cái gì đó cần phải thực thi. Khi chúng ta nói về vòng khác, bạn sẽ thấy lý do tại sao đó là một sự khác biệt quan trọng. Nhưng đối với các vòng lặp là một cái gì đó thiết lập. Bạn biết bạn có thể tính toán số hoặc bạn biết số lần bạn muốn điều này lặp đi lặp lại ở đầu. Vì vậy, nếu bạn thấy ở đây, chúng tôi chỉ có một loại nói chung khung xương cho một vòng lặp for ở đây. Vì vậy, cho-khởi, đây là nơi các biến của bạn được khởi tạo. Với Mario, tôi chắc chắn rằng các bạn đã làm một cái gì đó giống như int i bằng 0. Đó là nơi sẽ xảy ra trong màu xanh. Bạn có điều kiện của bạn, là những gì đang kiểm tra tất cả các thời gian. Nếu tình trạng này là sự thật, sau đó phần còn lại của đoạn mã thực thi. Sau đó nó sẽ chạy again-- và yêu cầu. Và sau đó chúng tôi có cập nhật, nơi bạn đang cập nhật biến của bạn. Vì vậy, một lần nữa, có như Mario, tôi chắc chắn các bạn đã làm một cái gì đó giống như tôi cộng cộng. Vì vậy, mỗi lần vòng lặp ran, tôi đã cập nhật để rằng khi chúng tôi đã kiểm tra nó chống lại một số điều kiện, nó đã được thay đổi. Bởi vì nếu bạn chỉ có một biến tĩnh, nếu nó thực hiện lần đầu tiên, đó là chỉ cần đi để thực hiện vô cùng. Vì vậy, bạn phải chắc chắn rằng bạn cập nhật biến của bạn đúng. Và chúng tôi cũng chỉ có một đại diện hình ảnh đó. Tất cả mọi người tốt? Đối với các vòng lặp. Nên đã thấy những trong pset của bạn. Cool. Vì vậy, đây chỉ là một ví dụ đơn giản. In Đây là CS50! 10 lần. Và vì vậy chúng tôi có khởi tạo của chúng tôi, như chúng ta thấy ở đó, với int i bằng 0, cho tôi ít hơn 10, và tôi cộng với cộng với. Và nó sẽ in mà 10 lần. Vì vậy, trong khi loops-- trong khi các vòng lặp là khi tuyệt vời mà bạn không nhất thiết phải có biết bao nhiêu lần nó sẽ cập nhật trong đầu. Bạn chỉ cần có một số điều kiện kiểm tra. Và điều này có thể là một cái gì đó giống như while-- chúng ta hãy lấy một ví dụ từ pset của bạn. Nếu Mario, bạn cố gắng đầu vào một số âm. Phải không? Anh đã dự định lại nhắc người sử dụng của bạn. Vì vậy, bạn có thể nói, tốt, nếu các yếu tố đầu vào người sử dụng một cái gì đó nhỏ hơn không, lại nhanh chóng họ. Và tôi chắc chắn rằng có thể có được cái gì mà một số bạn được sử dụng trong mã của bạn. Vì vậy, nó là một điều đơn giản. Bạn có thời gian, một số điều kiện đó được kiểm tra mỗi lần mã đi để thực thi. Nếu nó để đánh giá đúng, chúng ta chạy nó. Nếu chúng ta không làm. Và những gì thực sự important-- cái gì tôi nghĩ rằng David đã nói về trong lecture-- là niềng răng. Bất cứ điều gì của trong niềng răng là những gì đang thực hiện. Nếu bạn quên những niềng răng, nó chỉ đi là dòng trực tiếp sau khi được thực hiện. Vì vậy, nếu bạn có ba điều đó có nghĩa vụ xảy ra khi này điều kiện để đánh giá đúng, và bạn không có những niềng răng, chỉ điều đầu tiên sẽ xảy ra. Vì vậy, rất hiểu biết của nơi bạn đặt niềng răng của bạn. Nếu bạn gắn bó với Style50, điều này chắc chắn sẽ giúp bạn. Cool. Vì vậy, đây là một đếm ngược từ 10 đến zero. Và như bạn thấy ở đây, chúng ta khởi tạo một số truy cập bên ngoài của nó. Một điều đó là khác nhau là chúng ta không khởi tạo biến của chúng tôi trong vòng lặp trong khi của chúng tôi. Nó khởi tạo bên ngoài của nó. Chúng tôi chỉ đơn giản là chỉ cần đặt các điều kiện trong khi cho chúng tôi. Vì vậy, trong trường hợp này, đó là trong khi số là lớn hơn không. Và chúng tôi in ra những gì số của chúng tôi là, và sau đó chúng tôi giảm giá trị biến của chúng tôi. Và đó cũng là một điều cần chú ý. Cập nhật của chúng tôi không xảy ra trong vòng mà phần đầu tiên của vòng lặp while. Nó thực sự sẽ xảy ra trong vòng niềng răng, cơ thể của văn bản. Vì vậy, trong khi loops---do-trong khi vòng là tuyệt vời cho người sử dụng xác nhận. Vì vậy, một số bạn có thể có cũng được sử dụng trong pset của bạn. Bạn có thể nói, làm gì, như thế nào, yêu cầu người dùng cho đầu vào. Và sau đó, trong khi, như thế, đầu vào là ít hơn so với một số số. Vì vậy, đối với một trường hợp rõ ràng với Mario, nó sẽ làm printf, nhập một số nguyên, và sau đó một số nguyên bằng getInt. Và sau đó nó sẽ thấy thực sự thực thi mã đầu tiên. Bạn thực sự sẽ có một số loại nguyên. Và sau đó bạn có thể nói, trong khi số nguyên đó là ít hơn không. Vì vậy, những gì nó sẽ làm là nó sẽ thực hiện ít nhất một lần. Nó sẽ kiểm tra điều kiện. Nếu điều kiện là đúng, nó sẽ chạy một lần nữa. Vì vậy, trong khi các vòng lặp là tuyệt vời cho người sử dụng xác nhận, bởi vì bạn biết mã sẽ thực hiện ít nhất một lần, trong khi với trong khi các vòng, bạn không đảm bảo rằng nó sẽ thực hiện một lần. Nó sẽ kiểm tra điều kiện đầu tiên và sau đó quyết định để thực hiện nó, trong khi một do-while sẽ thực thi mã đầu tiên và sau đó kiểm tra xem liệu bạn cần phải lặp lại nó. Không phân biệt có ý nghĩa với tất cả mọi người? OK. Cool. Vì vậy, trong trường hợp này, đây là loại về những gì tôi đã nói về, này lại nhắc nhở cho đến khi bạn nhận được một số tích cực. Vì vậy, chúng ta biết rằng printf "Nhập một số tích cực" và thực sự yêu cầu cho điều đó đầu vào sẽ xảy ra ít nhất một lần. Nếu người dùng là ác và giữ nhập một số tiêu cực, người biết bao nhiêu lần nó sẽ thực hiện. Tuy nhiên, mã này được đảm bảo để thực hiện ít nhất một lần. Và đó là lý do tại sao nó là tuyệt vời để phê chuẩn đầu vào. Và bạn sẽ sử dụng khá một chút. Tất cả các bên phải, bất kỳ câu hỏi cho đến nay? Chúng tôi tất cả đều tốt? Tôi có nói quá nhanh? Chúng tôi có tốt không? OK. Đáng sợ Vì vậy, chúng ta sẽ đi trước và nói về mảng. Cool. Vì vậy, mảng cơ bản chỉ cấu trúc dữ liệu cho phép chúng ta lưu trữ những thứ cùng loại. Vì vậy, nếu bạn đã bao giờ có một mảng, nó hoặc chỉ cần đi để có ints hoặc nó chỉ là sẽ có nổi hoặc nó chỉ là sẽ phải ký tự. Bạn sẽ không có một int với một char với một phao với một đôi. Một điều. Mảng chỉ là một kích thước, hoặc họ chỉ có một loại. Vì vậy, ở đây chúng tôi có một loạt các kích thước ba với ba số nguyên trong đó. Họ có thể nổi, nhưng chúng tôi sẽ nói ints họ. Vì vậy, một điều nhận ra là mảng là một kích thước thiết lập khi bạn khởi tạo họ, và họ không easily-- vì tất cả các bạn ít cảm thấy thoải mái, bạn chỉ nên nghĩ về họ như không có khả năng mở rộng kích thước. Tuy nhiên lớn bạn đặt ra mảng của bạn trong đầu, đó là kích thước của nó sẽ ở lại, vì mảng là một khối liên tục của bộ nhớ. Và khi các bạn có được thành hơn một chút làm thế nào bộ nhớ thực sự đặt ra trên đĩa và trong heap và stack, nó sẽ có ý nghĩa nhiều hơn một chút. Nhưng bạn chỉ có thể nghĩ như thế, đó là một dãy các không gian trên đĩa cứng của bạn. Và bạn không thể đảm bảo rằng có sẽ là không gian trống sau khi nó. Bạn có thể khởi tạo một mảng ba và sau đó có thể bạn khởi tạo một mảng của năm sau đó, và nó ngay sau đó. Vì vậy, nếu bạn đã đi qua chỗ ba trong đó mảng đầu tiên, bạn sẽ có văn bản trên cái gì khác. Vì vậy, mảng are-- cho các bạn, chỉ cần nghĩ về họ như một kích thước cố định. Vì vậy, việc tạo ra một array-- bạn đang đi cần phải làm điều này khá một chút. Vì vậy, trong cùng một cách mà chúng ta có một cấu trúc chung của chúng tôi cho các vòng, chúng tôi có một vị tướng đẹp cấu trúc cho mảng của chúng tôi. Bởi vì họ là của một loại, tất cả các các yếu tố trong một mảng là của một loại, bạn cần phải khởi tạo loại đó là. Vì vậy, như bạn thấy ở đây, chúng ta có một ít kiểu dữ liệu khung tốt đẹp. Vì vậy, nếu chúng ta đang tạo ra một int mảng, đó sẽ là int. Nếu chúng ta đang tạo ra một char mảng, nó sẽ được char. Nếu chúng ta đang tạo ra một chuỗi mảng, nó sẽ được chuỗi. Và sau đó là tên của mảng của bạn, bất cứ điều gì bạn muốn nó được. Vì vậy, có lẽ đó là điểm kiểm tra hoặc có thể đó là sinh viên hoặc có thể đó là kẹo. Dù bạn quyết định đặt tên của bạn mảng, đó là những gì nó sẽ được. Và sau đó trong dấu ngoặc đơn, bạn sẽ có kích thước mà bạn muốn. Vì vậy, chúng tôi đang lưu trữ 10 học sinh hoặc được chúng tôi lưu trữ 15 loại kẹo? Những gì không. Vì vậy, trong ví dụ của chúng tôi ở đây, chúng tôi đang tạo ra một mảng kích thước ba, mà các bạn thấy ngay tại đây ở bên phải. Và khi lần đầu tiên chúng ta khởi tạo nó, tất cả mọi thứ được thiết lập để không. Vì vậy, nó chỉ nghĩ giống như một phiến đá trắng. Chúng tôi có tất cả các không gian này, chúng tôi có tất cả các hộp chúng ta có thể đưa dữ liệu của chúng tôi vào, nhưng họ chỉ trống cho thời gian được. Vì vậy, nếu chúng ta muốn thực sự giao cho các giá trị, chúng ta làm như vậy là ngay dưới đây cho thấy. Vì vậy, bạn có bất cứ điều gì tên của bạn mảng và sau đó là những gì chỉ số bạn muốn. Vì vậy, chỉ số này chỉ đề cập đến, như thế nào, khe chúng tôi đang tìm kiếm. Và một điều quan trọng cần chú ý là mảng được zero-lập chỉ mục. Vì vậy, nếu chúng ta muốn không gian đầu tiên trong bộ nhớ của mảng của chúng tôi, nó sẽ là số không. Nếu chúng ta muốn thứ hai, nó sẽ là một. Nếu chúng ta muốn thứ ba, nó sẽ có hai. Vv và vv. Đó cũng là lý do tại sao, thông thường, khi chúng ta làm cho loops-- tôi chắc chắn các bạn đang tự hỏi, tại sao Chúng ta bắt đầu từ 0 so với 1? Và đó là bởi vì khi chúng ta chuyển vào sử dụng các mảng, nó bản đồ một cách chính xác. Vì vậy, nếu bạn muốn lặp vào một mảng, nó có ý nghĩa nhiều hơn để làm i bằng 0, bởi vì chúng tôi biết rằng sẽ tương ứng đến vị trí đầu tiên trong bộ nhớ. Mọi người đều tốt với điều đó? Cool. Và sau đó trên dưới cùng ở đây chỉ là một cách khác để khởi tạo một mảng. Bạn vẫn có của bạn kiểu dữ liệu và tên, nhưng thay vì thực sự đặt một kích thước trong đó, bạn chỉ có thể làm khung trống. Và sau đó với các xoăn niềng răng ở phía dưới, bạn chỉ có thể nhập dữ liệu bạn muốn tách bằng dấu phẩy. Và đó sẽ tự động nói, OK, tôi thấy rằng bạn có ba điều trong những niềng răng. Vì vậy, tôi biết rằng tôi cần phải phân bổ ba khối bộ nhớ và sau đó lưu trữ những người. Vì vậy, phiên bản đầu tiên bạn có thể sử dụng nếu bạn đang yêu cầu người dùng của bạn để đầu vào giá trị để bạn có thể lặp qua mảng và ask-- nhận được một số int để nhập chúng. Nếu bạn biết trước các giá trị, nó có ý nghĩa hơn rất nhiều sử dụng cách thứ hai. Nhưng trong hầu hết trường hợp, bạn có thể không biết những gì những giá trị đang có được. Cool. Bất kỳ câu hỏi khác? Được rồi. Vì vậy, truy cập elements-- vì vậy một những điều tuyệt vời về mảng là họ là ngẫu nhiên truy cập, có nghĩa là bạn không cần phải xem xét thông qua tất cả các khối. Nếu bạn biết rằng bạn muốn gì trong khối hai, bạn chỉ có thể nói, cho tôi ngăn chặn hai. Và đó là lý do tại sao các chỉ số rất quan trọng, và đó là cách chúng tôi thực sự truy cập chúng. Vì vậy, trong trường hợp này, như chúng ta đã thấy trước khi chúng tôi đã được gán các giá trị, trong một trong những trước đây, chúng tôi đã có tên và chỉ số chúng tôi muốn truy cập, phải không? Vì vậy, trong cùng một cách, đó là tất cả chúng ta làm gì để thực sự kéo mà ra dữ liệu. Chúng tôi có tên và chúng tôi có chỉ số mà chúng tôi muốn. Vì vậy, trong trường hợp này, vòng lặp for xuống đây ở phía dưới, bất cứ ai biết những gì nó làm, những gì nó sẽ in ra? Mmhmm? Chính xác. Vì vậy, yeah, nó chỉ là lặp lại thông qua. i bằng zero-- chúng ta có thể đi bộ thông qua các mã chỉ một cách nhanh chóng. tôi là bằng không, tôi là ít hơn ba vào thời điểm này, phải không? Vì vậy, kiểm tra ra. Và chúng ta nói, OK, in f bất cứ điều gì là nhiệt độ i. i là không đúng ở đây khi chúng tôi đầu tiên lặp đi lặp lại, vì vậy chúng tôi đi đến chỗ đầu tiên này, và chúng ta nói, OK, 65 là số chúng ta muốn in ra. Vì vậy, nó sẽ in ra 65 và sau đó làm một dòng mới. tôi sẽ cập nhật, vì vậy nó in 87. Nó cập nhật một lần nữa, và nó sẽ in 30. Tất cả mọi người mát mẻ? Tuyệt vời. Được rồi. Vì vậy, đây là loại một điều tôi đã nói như thế nào bạn có thể theo dõi Điểm số của một ai đó và tại sao bạn sẽ sử dụng đầu tiên cách khởi tạo nó thay vì theo cách thứ hai. Và điều này chỉ đi qua. Và nhận thấy chúng ta có một kích thước lớp 30. Và chúng ta đang khởi tạo này mảng ints đó là kích thước 30. Và sau đó chúng ta đang lặp lại thông qua và chúng tôi yêu cầu người dùng nhập điểm cho mỗi và sau đó gán cho nó một nơi cụ thể trong bộ nhớ nơi nào đó trong mảng đó. Mát mẻ? Điều đó có ý nghĩa với tất cả mọi người? Mmhmm? Vì vậy, hashtag xác định quy mô lớp học 30 là một chỉ thị tiền xử lý, mà chỉ có nghĩa là nó gets-- nó có làm như quá trình biên dịch. Bạn có thể nghĩ về nó như là một biến toàn cầu. Cách chúng tôi làm điều đó là typically-- nó cho phép mã của bạn được dễ dàng hơn thay đổi. Vì vậy, hãy nói rằng quy mô lớp học của chúng tôi đột nhiên đi 30-15, nếu tôi không định nghĩa nó theo cách này, tôi sẽ phải đi qua toàn bộ chương trình của tôi và thay đổi tất cả các trường từ 30 đến 15. Nhưng với điều này, tôi nhận được để thay đổi một tại chỗ, và tất cả mọi thứ thay đổi khác. Nếu bạn đã bao giờ muốn làm một băm xác định trong một trường hợp nơi bạn đang theo dõi một số thiết lập số điểm cho một lớp học hoặc bạn đang sử dụng một số sẽ được sử dụng, như thế, suốt một chương trình rất dài, đó là tốt hơn để xác định rằng ngay từ đầu do đó, nếu bao giờ nó thay đổi, bạn sẽ có được để thay đổi một chỗ thay vì 100. Có? HỌC SINH: Giữa làm điều đó và chỉ tuyên bố [không nghe được] hơn ở đầu trang. ALLISON BUCHHOLTZ-AU: Vì vậy, nó đã làm với efficient-- nó là loại bên ngoài phạm vi của những gì chúng ta có thể bao gồm trong phần này. Nó có làm nhiều hơn với hiệu quả và làm thế nào những điều thực sự làm việc trong quá trình biên dịch. Nếu bạn muốn thực sự biết về nó, tôi rất vui để gửi cho bạn một email với các nguồn lực về nó. Băm xác định xu hướng ưa thích cho điều này. Và như bạn mã hơn, bạn loại học các sắc thái khi bạn nên sử dụng một toàn cầu so với băm xác định. Nhưng trong thời gian này, bạn không thực sự có lo lắng về nó là rằng câu trả lời ngắn. Mọi người đều tốt với điều đó? Và cũng có thể, nếu bạn muốn sử dụng một băm xác định, nó thực sự quan trọng để nhận thấy rằng tên phải ở trong tất cả các mũ. Chúng tôi không chỉ làm CLASS SIZE được ấn tượng. Nó thực sự phải ở trong tất cả các mũ. Cool. Bất cứ điều gì khác không? Chúng tôi có tốt không? Đáng yêu. Chào mừng. OK, vì vậy tôi muốn các bạn có một cái nhìn lúc này và xem liệu bạn có thể tìm thấy lỗi. Tôi sẽ cung cấp cho bạn một gợi ý. Đó là một nơi nào đó trong đó vòng lặp cho. Mmhmm? HỌC SINH: Nên ít hơn bằng 2. ALLISON: Vì vậy, nó có thể là nhỏ hơn hoặc bằng 2, hoặc nó có thể là ít hơn 3. Và lý do cho điều đó là những gì? HỌC SINH: Các [không nghe được], 0, 1, 2. ALLISON: Chính xác. Vì vậy, trong một loạt các kích thước n, chúng tôi chỉ có chỉ số của n trừ đi 1. Cool. Và sau đó chúng tôi có thể nhận được thực sự điên rồ và nhận được mảng đa chiều. Một trong những vấn đề khi tôi lấy nó trong tôi năm cần mảng đa chiều, và tôi nghĩ rằng một trong số họ có thể yêu cầu nó năm nay, vì vậy hãy thoải mái. Quấn đầu của bạn xung quanh nó bây giờ. Nó sẽ trở lại ám ảnh bạn, nhưng theo một cách mát mẻ. Vì vậy, bạn thực sự có thể chỉ nghĩ của các mảng đa chiều như mảng của mảng. Vì vậy, bạn có thể loại suy nghĩ của top này hàng là đoạn đầu tiên của bộ nhớ. Và đây là một trong các đoạn thứ hai của bộ nhớ, và hàng cuối cùng là đoạn thứ ba của bộ nhớ. Và trong đó, có một mảng. Nhưng tất nhiên, nó dễ dàng hơn miêu tả như thế này. Vì vậy, bạn khởi tạo nó theo cùng một cách. Đây là một nhân vật hội đồng quản trị của ba ba. Vì vậy, bạn có ba hàng và ba cột. Chúng tôi đang đại diện cho nó theo cách này. Và bạn sẽ truy cập vào nó cùng một cách, cột bởi hàng. Và do đó, 1,1 như chúng ta thấy ở đây. Chúng ta gán một số không, số không ở đó. 2,0 và 0,2. Vì vậy, bạn chỉ có thể truy cập nếu them-- bất cứ ai từng làm đại số tuyến tính, giống như cách bạn truy cập vào một phần tử trong một matrice, đó là ý tưởng tương tự ở đây. Vì vậy, bạn có thể liên hệ lại cho toán học. Bạn không cần phải lo lắng quá nhiều về điều này ngay bây giờ. Thật tốt khi có tiếp xúc, để biết rằng bạn có thể làm điều đó. Bạn có thể tạo ra một số điên number-- bạn có thể tạo ra các mảng điên được tất cả tôi sẽ nói. [Không nghe được] Có một chút điên, nhưng nó thực sự mát mẻ. Tuyệt vời. Và sau đó, vì vậy chúng tôi có một ví dụ ở đây. Nó tính toán chiều dài chuỗi. Vì vậy, có bao nhiêu người biết rằng các dây mà bạn đang sử dụng chỉ là mảng ký tự? OK, yeah. Vì vậy, các bạn có thể nghĩ rằng bạn có không mảng được sử dụng trước đây, nhưng bất cứ lúc nào bạn sử dụng getString trong Thư viện CSView, bạn thực sự chỉ yêu cầu một mảng các ký tự. Và chúng tôi đang chăm sóc của tất cả các rằng trong back-end cho bạn. Nhưng bạn đã được sử dụng mảng kể từ khi bạn bắt đầu. Bạn chỉ không biết nó được nêu ra. Và bất cứ khi nào bạn có một mảng ký tự hoặc một mảng đó là lưu trữ một chuỗi, điều cuối cùng luôn luôn là những gì gọi là terminator null, mà là này ngay tại đây. Và đó là vào cuối mỗi từ mà bạn đang lưu trữ. Vì vậy, nếu chúng ta muốn tìm ra chiều dài của một chuỗi, chúng ta có thể nói, tốt, bạn đã biết, nội dung của khối không bằng terminator rỗng của chúng tôi. Điều đó có nghĩa rằng có một số nhân vật đó mà chúng tôi thực sự quan tâm đến đó là một phần của từ. Bạn tăng chiều dài của bạn. Và sau đó khi chúng ta thực sự có thể kết thúc của từ này, nó sẽ chấm dứt và nó sẽ quay trở lại chiều dài của chúng tôi đối với chúng tôi. Mmhmm? HỌC SINH: Liệu các không gian được tính là terminator null? ALLISON: Vì vậy, một không gian không phải là một terminator null. Vì vậy, nếu bạn có một không gian multiple-- thực sự là một giá trị ASCII cụ thể. HỌC SINH: là gì chấm than bằng một lần nữa? ALLISON: Vì vậy, đây là những gì bạn tham khảo. Nếu bạn đã bao giờ nghe thấy tôi trong giờ làm việc, Tôi luôn luôn gọi nó, giống như, bang bằng. Vì vậy, không phải là tiếng nổ. Vì vậy, đây không phải là bằng. Vì vậy, nếu bạn đang cố gắng xem có cái gì là sai, bạn biết luôn luôn làm, bang bất cứ điều gì biến là, và nếu nó sai, nó để đánh giá đúng và bạn có thể làm công cụ mát mẻ với điều đó. Thêm về điều này sau. Cool. Tất cả mọi thứ tốt đẹp đó? Tuyệt vời. Vì vậy, bây giờ là lúc chàng trai của bạn để làm việc, kể từ khi tôi đã nói. Vì vậy, tôi muốn bạn chỉ cần tạo một mảng với các số nguyên một, hai và ba, và sau đó họ đã in ra. Bạn không cần phải làm, như, chính, blah, blah, blah, bất cứ điều gì. Tôi chỉ muốn bạn để khởi tạo mảng và sau đó tạo ra một cho vòng lặp để in chúng out-- hoặc một vòng lặp thời gian, tùy thuộc vào bạn. Tôi sẽ chỉ cung cấp cho bạn một vài phút để làm việc trên đó. Tôi sẽ nghỉ ngơi giọng nói của tôi. Nếu bạn có bất kỳ câu hỏi, tôi đang hạnh phúc đi xung quanh và nói chuyện với các bạn. Hãy nói chuyện với nhau. Nhận kẹo hơn. Trong thực tế, tôi sẽ chỉ đi bộ xung quanh với kẹo. Làm thế nào vậy? Bạn có muốn không? Bất cứ ai khác trong căn phòng này muốn kẹo? Bạn cũng có thể mất nhiều hơn một, guys. Đi một số ít nếu bạn muốn. Có thể là tốt. Những người khác có tốt không? OK. Ngoài ra, tôi sẽ tạo ra một mẫu Google vô danh, và các bạn chỉ có thể gửi thông tin phản hồi sau mỗi phần nếu có điều gì bạn muốn cải tiến hoặc một cái gì đó bạn muốn làm. Nếu tôi là một chút quá peppy cho bạn, tôi có thể cho nó dịu xuống. Tôi sẽ tạo ra đó và gửi mà ra để tất cả các bạn sau đó. Được rồi. Vì vậy, hãy bắt đầu nhỏ. Làm thế nào chúng ta sẽ khởi tạo mảng của chúng tôi? Kiểu mảng của chúng tôi là gì? Một int, phải không? OK, vì vậy những gì bạn muốn để gọi mảng của bạn? Int mảng, mát mẻ. Tất cả các bên phải, vì vậy chúng tôi có int mảng int bằng, và chúng ta có gì sau đó? HỌC SINH: [không nghe được] dấu ngoặc đơn. ALLISON: Niềng răng. Và sau đó bên trong dấu ngoặc? Một dấu phẩy hai dấu phẩy ba. Cool. Vì vậy, đó là tất cả đúng. Vì vậy, bây giờ chúng tôi có của chúng tôi cho vòng lặp. Vì vậy, trong phần đầu tiên của chúng tôi cho vòng lặp, chúng ta có gì? HỌC SINH: i bằng 0? ALLISON: Vì vậy, int i bằng 0, và sau đó điều kiện của chúng tôi là gì? Tôi là những gì sẽ được ít hơn? Chưa đầy ba, và như thế nào chúng tôi chúng tôi cập nhật tôi? i cộng với cộng với, cập nhật nó một. Và sau đó chúng ta sẽ có một số printf của số nguyên, và những gì là cuối cùng phần đó là thực sự sẽ nói những gì chúng ta cần phải được in ấn? Nó sẽ là tên của mảng, mà là int mảng, phải không? Và những gì trong dấu ngoặc đơn của int mảng? i. [? Vì vậy, tôi?] Gọi của tôi ví dụ, nhưng có bạn đi. Không phải là xấu. Tất cả mọi người tốt? Cool. Vì vậy, chúng tôi đang thực hiện với các mảng. Chúc mừng. Bạn quản lý để lặp qua tất cả the-- có? HỌC SINH: [không nghe được] ALLISON: Có. HỌC SINH: Tôi có một câu hỏi. Bạn có nghĩa vụ phải thụt vào niềng răng? ALLISON: Vì vậy, niềng răng nên dòng lên với cho vòng lặp, và sau đó tất cả mọi thứ bên trong dấu ngoặc nên được thụt vào. SINH VIÊN: OK, nên việc cho vòng lặp được thụt vào? ALLISON: Các vòng lặp không cần phải được thụt vào thời điểm này. Nếu bạn đang ở trong chính, nếu chúng ta thực sự đã có một chức năng chính ở đây, nó sẽ được thụt vào từ chính. Nhưng trong trường hợp này, nó là tốt. Vâng, câu hỏi. HỌC SINH: Bạn cần phải có các dấu ngoặc sau khi ví dụ? ALLISON: Vâng, nếu bạn khởi tạo nó theo cách đó. Vì vậy, hãy nhớ, đây là lần thứ hai cách khởi tạo một mảng nơi chúng tôi có niềng răng và sau đó thực tế của chúng tôi dữ liệu cách nhau bằng dấu phẩy bên trong. HỌC SINH: Tôi nghĩ là có ngoặc ví dụ đó. ALLISON: Không, họ đang niềng răng. Họ đang niềng răng. Nếu bạn khởi tạo nó rằng cách thứ hai, đó là niềng răng. Nếu chúng ta nói rằng, nếu int example-- chúng tôi chỉ muốn có một mảng trống cho ints, nó sẽ là int ví dụ khung ba. Các dấu ngoặc đại diện cho kích thước. Khi bạn có niềng răng, đó là dữ liệu thực tế bạn đang đặt vào nó theo cách này. Chúng ta có thể di chuyển trở lại rất nhanh. Vì vậy, trong một này, đây chỉ là của chúng tôi mảng ban đầu, khởi tạo. Và ở đây, chúng tôi cá nhân giao điểm với họ, vì vậy điều này đại diện cho các chỉ số của chúng tôi mảng, đó là lý do tại sao chúng tôi có dấu ngoặc đơn. Nhưng ở đây, nếu bạn thông báo, chúng tôi đã trái khung của chúng tôi mà không có một kích thước, và chúng tôi khởi tạo nó với dữ liệu thực tế tất cả-trong-một với niềng răng. HỌC SINH: Vậy tại sao chúng ta không có ngoặc trong ví dụ này? ALLISON: Vì vậy, trong đó một phần? HỌC SINH: Sẽ không phải chúng tôi nói, khung int ví dụ bằng niềng răng [không nghe được] ngoặc ví dụ. ALLISON: Oh, xin lỗi. Bạn nói đúng. Chúng tôi có dấu ngoặc đó. Xin lỗi guys, xấu của tôi. Có, bạn nên có ngoặc đơn sau ví dụ. Bạn hoàn toàn đúng. HỌC SINH: [không nghe được] không làm việc đó. ALLISON: Không, bạn phải có dấu ngoặc đơn, bởi vì nếu không nó sẽ không khai báo một mảng. HỌC SINH: [không nghe được]. Xin lỗi về điều đó. ALLISON: Xin lỗi, bạn cần ngoặc đơn sau ví dụ. Lỗi đánh máy. Good catch, sao vàng cho bạn. Ngoài ra, nếu bạn đang hỏi một câu hỏi, nếu các bạn sẽ chỉ cho tôi biết tên của bạn, Tôi thích điều đó. Tôi rất muốn có thể biết tất cả tên của bạn. Tôi sẽ không để lạnh gọi cho bạn, tôi thực sự không chỉ muốn biết tên của bạn. Vì vậy, xin vui lòng thực sự cho tôi biết tên của bạn. Leah: Leah. ALLISON: Leah. OK, vì vậy functions-- Tôi biết trong ngắn họ nói về điều này trong bài giảng. Vì vậy, chức năng là loại chỉ như những điều cắn-kích thước nhỏ nơi bạn vượt qua trong đầu vào, một cái gì đó kỳ diệu sẽ xảy ra, và bạn sẽ có được kết quả đầu ra. Cool. Vì vậy, bạn thực sự sử dụng một rất nhiều trong số này đã. Nhận int, nhận được chuỗi, in f. Đây là tất cả các chức năng nơi bạn chỉ cần gọi cho họ, có rất nhiều điều kỳ diệu đang diễn ra trong nền bạn không nhất thiết phải nhìn thấy, và bạn nhận ra những gì bạn muốn. Hoặc ít nhất bạn có được những gì bạn hy vọng bạn muốn. Và về cơ bản các điểm chức năng, và một trong những chủ đề chính của CS, là để phá vỡ mã của bạn vào phần quản lý. Khi bạn bắt đầu viết các chương trình này thực sự lâu dài, hoặc trong Scratch khi bạn có ý tưởng lớn này cho một trò chơi, bạn cần để có thể phá vỡ nó xuống, như thế, OK, làm thế nào để bắt đầu? Các mảnh nhỏ mà tôi cần là gì? Oh, tôi cần phải yêu cầu người sử dụng cho một cái gì đó. Bây giờ tôi cần in một cái gì đó. Oh, tôi cần phải tính toán giá trị này. Và học tập như thế nào để phá vỡ của bạn mã số và các vấn đề lớn bạn có thành những miếng nhỏ và tạo ra các chức năng thực sự là một trong những nền tảng lớn của CS. Vì vậy, bạn có thể nghĩ đến một chức năng giống như giống như một hộp đen, hộp đen huyền diệu, mà bạn đặt mọi thứ vào và bạn nhận được một số đầu ra. Và phần còn lại của chương trình không cần thiết phải biết những gì đang xảy ra bên trong là hộp đen. Tất cả nó quan tâm là những gì đi vào và những gì đi ra. Cool. Vậy tại sao chức năng? Organization-- như tôi đã nói, khi bạn đối phó với cơ sở mã rất lớn, làm thế nào bạn tổ chức mã của bạn sẽ được dễ dàng hơn nhiều nếu bạn sử dụng chức năng này. Bởi vì bạn sẽ có thể được, như thế, OK này, là những gì chức năng này không và đây là những gì người khác làm. Và bạn có thể dễ dàng nhìn thấy làm thế nào tất cả họ đều phù hợp với nhau. Vì vậy, phá vỡ nó ra thành tất cả các subparts quản lý được. Vì vậy, simplification-- Tôi chắc rằng các bạn tất cả thấy điều này, như tôi đã nói, với Scratch. Bạn có ý tưởng lớn này, và bạn giống như, làm thế nào tất cả các công việc này? Nhưng nếu bạn tiếp cận nó từng phần, bạn nói, OK, làm thế nào để làm cho một sprite trôi nổi trên màn hình? Đó là một chút dễ dàng hơn. Vì vậy, sử dụng tốt các chức năng làm cho mã của bạn dễ dàng hơn để đọc. Nó làm cho nó dễ dàng hơn để gỡ lỗi đó như bạn nhận được vào bộ vấn đề sau này của bạn, bạn sẽ thực sự muốn có thể làm được. Và họ cũng dễ dàng hơn để thiết kế và thực hiện. Bạn có thể mã lên một nhỏ hoạt động tương đối nhanh chóng và chắc chắn rằng nó hoạt động so với cố gắng để tạo ra chương trình này toàn bộ dài và sau đó loại đi qua và xem những gì làm việc và những gì không. Và sau đó có thể dùng lại. Vì vậy, chức năng chỉ cần để được viết một lần, và sau đó bạn có thể sử dụng chúng càng nhiều lần càng tốt. Vì vậy, nó, như, sinh thái thân thiện trong một cảm giác. Nếu bạn đã có những thứ như in f, nơi bạn đã phải viết ra sự kỳ diệu mà đi đằng sau in f mỗi lần duy nhất bạn muốn in một cái gì đó, bạn sẽ là khá ốm và mệt mỏi của nó bởi cuối. Một trong những điều mà bạn sẽ thấy học trong các lớp học sau CS, hoặc một trong những tốt nhất mảnh lời khuyên tôi nhận được là, nếu bạn đang sao chép và dán mã, thì có lẽ nó phải là một chức năng. Nếu bạn có chính xác cùng dòng suốt mã của bạn, nếu bạn yếu tố chúng ra, mã của bạn có lẽ sẽ được, như thế, ngắn hơn năm lần và được nhiều hơn nữa dễ đọc. Và thay vì cố gắng để khắc phục sự cố tất cả những nơi khác nhau, nơi mọi thứ có thể đi sai, bạn có một chức năng bạn nhận được để khắc phục sự cố. Và tôi hứa, rất nhiều này có vẻ loại trừu tượng bây giờ, nhưng khi bạn nhận được vào sau và sau đó vấn đề đặt ra, nó sẽ có ý nghĩa hơn rất nhiều và thực sự được lái xe về nhà. Có bất kỳ câu hỏi về chức năng cho đến nay? Tại sao chúng ta đang sử dụng chúng? Tôi biết chúng tôi đã không nhận vào gritty nitty nào. Vì vậy, việc xác định một function-- giống như mảng, chúng ta cần một số loại of-- này chỉ là đầu ra nói chung. Vì vậy, đây là một chức năng mà chỉ cần đi để cube một số đầu vào. Và trên trang tiếp theo, trên thực tế, chúng tôi có tất cả những điều nhỏ tuyệt vời ở đây. Vì vậy, tất cả mọi người có thể đọc rằng, vì tò mò? Tôi biết các màu tím và màu đen có thể là một chút khó khăn. Nhưng điều lớn để know-- để là người đầu tiên một trong những quyền ở đây là kiểu trả về của chúng tôi. Vì vậy, đây là nói về đầu ra của chức năng này khi, trong trường hợp này, chúng tôi đưa vào một số số, những gì chúng tôi nhận được là số giống tiêu. Vì vậy, nó phải là một int trong trường hợp này. Có lẽ nó sẽ là một đôi hoặc cái gì khác sau đó, nhưng trong trường hợp này, nó là một int. Với c, bạn luôn cần một kiểu trả về. Nó sẽ là một int. Nó sẽ là một phao. Nó sẽ là một đôi. Nhưng bạn phải xác định những gì chức năng này sẽ trở lại. Nếu không nó sẽ la mắng bạn, và nó sẽ không biên dịch. Bạn sẽ buồn, và tôi sẽ buồn. Và nó chỉ là không tốt. OK. Và sau đó chúng tôi có tên chức năng của chúng tôi. Và như bạn có thể thấy ở đây, với c có mô hình rất phù hợp này. Loại của bạn là gì, tên là gì, và sau đó một số điều khác ở cuối. Vì vậy, chúng tôi có kiểu trả về của chúng tôi, Tên chức năng của chúng tôi, và sau đó chúng tôi có tiêu đề của chúng tôi với danh sách tham số của chúng tôi. Vì vậy, danh sách tham số là, là những gì chức năng này sẽ mất trong? Một danh sách tham số chỉ đơn giản là một là từ đồng nghĩa với, đầu vào của chúng tôi là gì? Và trong cùng một cách mà chúng tôi phải xác định chức năng của chúng tôi và cung cấp cho nó trở lại gõ, mỗi đầu vào của chúng tôi cần phải có một loại liên kết với nó. Vì vậy, chúng tôi biết những gì chức năng của chúng tôi thực sự có thể làm việc với. Vì vậy, trong trường hợp này, chúng tôi có một số int đầu vào. Vì vậy, một lần nữa, nó sẽ được loại và những gì bạn đang gọi nó. Và sau đó, như bạn thấy ở đây, chúng tôi có cơ thể của chúng tôi. Vì vậy, chúng tôi có một số int đầu ra, mà chỉ là lần đầu vào của chúng tôi tự bản thân lần, mà chỉ cần khối nó. Và sau đó chúng tôi trở về đầu ra. Vì vậy, như bạn thấy ở đây, chúng ta có một int lần một int lần một int, do đó, nó trả về một int, mà đã được tuyên bố đó. Vì vậy, tất cả mọi thứ là gắn kết. Tất cả mọi thứ là hạnh phúc. Chức năng của bạn sẽ chạy. Và đây chỉ là điều nói chung. Vì vậy, luôn luôn có loại trả lại, tên, và danh sách tham số của bạn. Mỗi điều trong của bạn danh sách tham số, hoặc đầu vào, cần phải có một loại liên kết với nó. Và sau đó bạn có của bạn cơ thể ở đây với bất cứ điều gì bạn muốn làm gì với đầu vào của bạn. Và sau đó rõ ràng là bạn muốn trở lại một cái gì đó. Đôi khi chức năng này sẽ chỉ trả lại. Họ không thực sự trở lại một cái gì đó để bạn có thể sử dụng. Nhưng bạn phải quay trở lại trong một số cách. Và khi bạn đang thực hiện chức năng của riêng bạn, chúng ta có thể nhận được vào sâu hơn một chút. Cá nhân, nếu bạn muốn, có rất nhiều điều khác nhau mà bạn có thể làm ở đó. Tất cả mọi người tốt? Bất cứ điều gì trong danh sách này mà bạn muốn tôi đi qua, mà bạn không hiểu? Tất cả mọi người là tốt không? Cool. Tuyệt vời. OK, vì vậy chúng tôi đang đặt tất cả cùng nhau này ngay bây giờ. Vì vậy, chúng tôi có một số đầu vào int khối lập phương, vì vậy đây là một chương trình đầy đủ ở đây. Cho đến bây giờ, tôi đã loại được cho bạn kẻ đoạn mà có thể được đi trong một chương trình. Chúng tôi đã chỉ được nhìn vào chức năng. Nhưng đây là toàn bộ chương trình. Vì vậy, có bao nhiêu bạn nhớ nguyên mẫu từ từ bài giảng? Cool. Chúng tôi đã có một. Tên của bạn là gì? Steph: Steph. ALLISON: Steph? OK, tuyệt vời. Vì vậy, bạn có nhớ những gì một nguyên mẫu là gì? HỌC SINH: Bạn nói [không nghe được] trước khi bạn thực sự đối phó với nó. ALLISON: Bạn có nhớ tại sao? HỌC SINH: số ALLISON: OK. Sao vàng. Vì vậy, có, một mẫu thử nghiệm chúng tôi có trước đó, bởi vì nếu không, trình biên dịch của chúng tôi sẽ hét vào mặt chúng tôi. Nó sẽ nói, OK, chức năng khối này là gì? Giống như, bạn có nghĩa là có nói với tôi không có gì về việc này. Nó giống như khi bạn bước vào một lớp học, và một người nào đó giống như, có một bài kiểm tra ngày hôm nay. Và bạn thích, bạn không bao giờ nói với tôi về việc này. Tôi không hài lòng với chúng tôi. Nguyên mẫu là cơ bản như giáo trình của bạn nói, hãy nhìn. Người đứng đầu lên. Có sẽ là một bài kiểm tra vào ngày này. Đừng lăn tăn khi bạn nhận được nó. Bạn sẽ được tốt. Vì vậy, tất cả các mẫu thử nghiệm là nói chính, tôi sẽ sử dụng chức năng này. Tôi hứa tôi xác định nó sau này. Đừng lăn tăn với tôi. Chỉ cần biên dịch và làm những gì tôi nói với bạn. Vì vậy, chúng tôi có các mẫu thử nghiệm có chỉ để làm cho trình biên dịch của chúng tôi hạnh phúc. Và đó là cơ bản một lời hứa bạn đã xác định chức năng này sau đó và rằng bạn không chỉ cần gọi điều ngẫu nhiên này mà nó không biết những gì bạn đang sẽ được làm. Vì vậy, trong trường hợp này, chúng tôi có chính ở đây. Chúng tôi khởi tạo một số nguyên x. Đó là hai. Chúng tôi sẽ in ra những gì là x. Chúng tôi sẽ cube x. Như bạn thấy, chúng tôi có của chúng tôi khai báo hàm xuống đây mà chúng ta đã nói ở trên. Nó sẽ cube x, và sau đó, nếu chúng ta nhớ, chức năng lập phương thực trả về một số nguyên chúng ta, được lưu trữ trong x một lần nữa để chúng tôi có thể in ra tám, hoặc khối x ngay bây giờ. Điều đó có ý nghĩa với tất cả mọi người? Chúng tôi có tốt không? Được rồi. Tuyệt vời. Được rồi. Bao nhiêu trong số các bạn nhớ này vì vậy đây là cơ bản chỉ của bạn stack và heap của bạn, chỉ là một hình dung cách bộ nhớ được lưu trữ ở đây. Vì vậy, chúng tôi chỉ muốn làm cho chắc chắn rằng bạn hiểu cách này được đại diện trong bộ nhớ. Nếu bạn theo học các lớp như CS61 và các công cụ sau, bạn có thể tìm hiểu điều này hơn rất nhiều trong chiều sâu, và nó thực sự mát mẻ. Tôi khuyên bạn nên nó. Nhưng bây giờ, tôi sẽ cung cấp bạn cái nhìn tổng quan vì vậy bạn không cần phải biết nitty gritty. Vì vậy, đầu chỉ là một đoạn văn bản mà chứa các số không và những người thực tế, nhị phân cho điều đó. Và điều này được sử dụng để lưu trữ biến toàn cầu nếu bạn có bất kỳ. Khi bạn di chuyển xuống, chúng tôi có, như bạn thấy ở đây, dữ liệu khởi tạo, chưa được khởi tạo dữ liệu, và sau đó heap. Vì vậy, chúng tôi không thực sự nói chuyện về đống ngay bây giờ. Chúng tôi sẽ nhận được nó sau này. Để bây giờ, tôi chỉ cần đi để vẫy tay của tôi và được như thế, bạn không cần phải biết về việc này ngay bây giờ. Nhưng chúng tôi sẽ nói một chút chút về stack. Vì vậy, các ngăn xếp là where-- chúng tôi có zoom trong. Đây thực sự là cách chương trình chúng ta chỉ nhìn xảy ra trong bộ nhớ. Vì vậy, những gì xảy ra là, mỗi thời gian chúng ta gọi là một chức năng, chúng tôi có được những gì được gọi là một chồng khung hình, đó là một trong những. Vì vậy, các thông số chính. Vì vậy, đó là những điều chúng ta đi vào chính. Vì vậy, họ ngay tại đây ở phía dưới, bởi vì đó là điều đầu tiên chúng ta gọi. Và sau đó chúng tôi nhận được của chính người dân địa phương, và khi chúng ta nói rằng, chúng tôi có nghĩa là các biến địa phương được lưu trữ trong chính. Vì vậy, người dân địa phương ở đây sẽ là, như, x bằng hai trong trường hợp này. Bởi vì đó là địa phương để chính. Mọi người nhớ phạm vi, đi qua mà trong bài giảng? OK. Vì vậy, chỉ cần các biến được khởi tạo trong vòng chính. Vì vậy, đó là lý do tại sao chúng tôi có chính [? giọng hát. ?] Và sau đó trong chính, chúng ta gọi là khối lập phương. Phải không? Vì vậy, chúng tôi nhận được một khung khác với các thông số của khối lập phương. Vì vậy, trong trường hợp này, khối lập phương của các thông số hiện nay các x mà chúng ta thông qua tại, hai mà chúng tôi đi qua trong. Và sau đó người dân địa phương lập phương, mà là nơi cubing thực tế xảy ra. Và sau đó nó trở về. Vì vậy, những gì xảy ra là như khối lập phương thực sự làm những gì nó phải làm, nó sẽ trả về. Khi nó trở về, khung này lại, và trở lại của nó xuống chính. Và sau đó trong chính, chúng tôi thực sự có thể in nó. Vì vậy, khi bạn đang trở về một cái gì đó, khi chức năng của bạn trở lại, nó giống như đi trên những giá trị để khung bên dưới và sau đó rời khỏi. Và điều phải thực hiện theo thứ tự. Và khi bạn nhận được các chương trình lớn hơn, chúng ta có thể làm mát hơn và phức tạp hơn sơ đồ. Nhưng hiện nay, đây là chỉ là một cái nhìn tổng quan vì vậy bạn phải loại một sự hiểu biết về những gì xảy ra khi bạn đang gọi điện thoại một chức năng và làm thế nào mà thực sự trông giống trong bộ nhớ. Mát mẻ? Tất cả mọi người tốt? Tuyệt vời. Vì vậy, đây là một trong đó là chỉ cần cố gắng để trao đổi mọi thứ. Như chúng ta thấy ở đây, chúng tôi có chức năng nguyên mẫu của chúng tôi để trình biên dịch của chúng tôi không la mắng chúng tôi. Chúng tôi có một số chính, và chúng tôi muốn chuyển đổi x và y. Họ đã không thực hiện bản demo này trong bài giảng nào, có họ? Họ có không? OK. Vì vậy, chúng ta sẽ đi trên này rất ngắn gọn. Bạn sẽ nhận được vào ví dụ này nhiều hơn trong chiều sâu, tôi nghĩ rằng, trong tuần này. Và sau đó vào tuần tới chúng ta có thể thực sự đi sâu vào lý do tại sao điều này không làm việc. Vì vậy, chúng tôi có khoảng trống này chức năng here-- trao đổi. Vì vậy, khoảng trống chỉ có nghĩa là không có gì là trả lại. Và chúng tôi có trao đổi int a và int b. Và chúng tôi có một số tạm thời biến đó là một. một được giao cho b, và sau đó b được gán vào temp để a và b của giá trị doanh nghiệp được chuyển sang. Tuy nhiên, cốt truyện xoay, điều này không làm việc. Và một phần của nó thực sự có để làm với thực tế là một và b ở đây, những người mà có được thông qua trong ở đây, thực sự là bản sao của x và y. Vì vậy, khi chức năng thực sự trở lại, nó chuyển các bản sao nhưng không x và y của thực tế. Vì vậy, một cách để suy nghĩ về nó là that-- giả vờ đây là những trao đổi. OK? Vì vậy, trong chính, chúng tôi có x và y khởi tạo. Nhưng khi chúng tôi thực sự đi lên để những khung hình với trao đổi, chúng tôi đang đi qua các giá trị trên với nó, và họ đang khởi tạo. Và họ chỉ từng sống ở đây. Vì vậy, a và b sống ở đây. Và họ nhận được đổi chỗ. Nhưng khi chúng ta quay trở lại, chúng tôi không làm bất cứ điều gì với a và b. một và b nghỉ với chức năng của chúng tôi. Và như vậy x và y ở lại cùng. Bạn sẽ nhận được nhiều hơn nữa vào làm thế nào để khắc phục điều đó và như thế nào chúng tôi thực sự đối phó với điều này sau. Nhưng nó chỉ là một điều để loại giữ trong tâm trí. Sử dụng nó trong tương lai. Đừng lo lắng nếu điều đó không làm cho tất cả các ý nghĩa trên thế giới. Họ là những bản sao là điều lớn nhất. Nếu bạn đang đi để có bất cứ điều gì đi từ đó, bạn thông qua trong bản. Vì vậy, bản gốc được giữ nguyên. Tất cả mọi người tốt? Cool. Vì vậy, đối số dòng lệnh. Tôi chắc rằng trong đầu các bạn tất cả có những người, như, int khoảng trống chính tuyệt vời. Và bạn đang như, OK mát mẻ. Tôi không thực sự quan tâm. Đây chỉ là những gì tôi đã viết. Nhưng trong chương trình mới của bạn, đặc biệt là trong pset này, và tại sao lại có phấn trên mặt đất? Với pset tiếp theo của bạn, bạn sẽ được nhìn thấy này. Int chính, int arg c, chuỗi cung v, dấu ngoặc đơn. Vì vậy, từ những gì chúng ta chỉ ngày nay học được, những gì Chúng ta nghĩ rằng tham số thứ hai hoặc yếu tố thứ hai là ở đây? Đây là một mảng. Loại mảng? Mảng chuỗi, có. Cool. Vì vậy, đó là cách bạn đang đi được tuyên bố này ngay bây giờ. Có ai nhớ những gì các đứng cho? Không có? Hmm? HỌC SINH: arg c. ALLISON: Vậy arg c giữ một truy cập. Đây là một int. Đó là một số, phải không? Vậy điều gì làm bạn nghĩ rằng con số đó là của? Yeah. Vì vậy, arg c là số lượng các chuỗi tạo nên các dòng lệnh. Vì vậy, nếu chúng ta thực sự do--, có những ví dụ sau đây, vì vậy tôi sẽ không nhận được trước bản thân mình. Đó là một số chuỗi chỉ tạo ra những dòng lệnh của bạn. Vì vậy, khi bạn làm, như, chấm giảm Mario, đó là một chuỗi mà làm cho nó lên. Trong phần này, bạn sẽ thực sự được ăn mọi thứ vào dòng lệnh, như tôi chắc chắn rằng các bạn những người đã đọc thấy spec. Vì vậy, trong những trường hợp này, có thể bạn sẽ thấy có hai hoặc ba đối số. Nó sẽ là một điều hữu ích để sử dụng. Và sau đó arg v, như chúng tôi đã nói, chỉ là một mảng chuỗi. Vì vậy, đó thực sự lưu trữ những gì bạn đã nhập vào dòng lệnh. Vì vậy, chúng tôi có những. Bạn có một số dấu chấm dấu gạch chéo sao chép outfile infile. Vì vậy, nếu arg c là số lượng các chuỗi rằng chúng ta đang đi qua vào lệnh dòng, arg c của chúng tôi trong trường hợp này là gì? Ba. Chính xác. Vì vậy, arg v của zero là gì? Vì vậy, điều đầu tiên chúng tôi đã được lưu trữ là gì? Dot giảm copy, chính xác. Và sau đó là thứ hai sẽ là infile. Thứ ba sẽ là outfile. Vì vậy, những gì về arg v ba? Nó sẽ là vô giá trị, bởi vì đó là cuối mảng của chúng tôi, phải không? Cool. Và sau đó những gì về một thứ sáu? Đó là loại một câu hỏi trick. Ish. Chúng ta biết nó là gì? Đó là không xác định. Chúng tôi không có ý tưởng những gì có thể được. Đó là bất cứ điều gì là đúng sau khi các mảng trong bộ nhớ, và chúng tôi không có đầu mối đó là những gì. Và đó là nguy hiểm để chạm vào những mọi thứ, bởi vì đối với tất cả các bạn đã biết, đó là một số phần của bộ nhớ mà bạn không nên truy cập hoặc null. Và nó có thể làm những điều điên rồ. Nó được gọi là trên-lập chỉ mục của bạn bị ràng buộc vào mảng của bạn. Đừng đi ra ngoài giới hạn của bạn mảng, hoặc những điều xấu có thể xảy ra. Bạn quay trở lại và, như thế, pháp luật vật lý đã bị phá hủy hoặc một cái gì đó. Cool. Điều đó có ý nghĩa với tất cả mọi người? Không quá xấu. Vì vậy, bây giờ, tất cả mọi người phần yêu thích, xem xét pset. Yay! OK. Vì vậy, đối với những người bạn của những người đã không đọc spec pset, bạn đang làm một số thực sự công cụ mát với mật mã. Bạn sẽ tạo ra một Caesar Cơ yếu và một Vigenere Cipher. Bạn chắc chắn nên đọc spec để xem làm thế nào những người làm việc. Và nếu bạn đang gặp bất kỳ rắc rối về những gì nó thực sự cần phải làm, hãy đến nói chuyện với tôi, gửi email cho tôi hoặc nhắn tin cho tôi. Tôi xung quanh. Vì vậy, có ba chính điều ở đây chúng tôi muốn nói chuyện about-- chỉ loại của một phần mở rộng của bài giảng. Những điều mà bạn có thể không biết về, gợi ý và các công cụ hữu ích. Vì vậy, chúng ta sẽ làm một đánh giá nhanh chóng của ASCII, bởi vì đó sẽ là siêu quan trọng đối với Mật mã Vigenère của. Chúng tôi sẽ chuyển đổi đầu vào dòng lệnh, mà sẽ rất hữu ích cho Caesar Cipher. Và sau đó modulo. Cool. Vì vậy, ASCII bản đồ ký tự số. Đây là một biểu đồ tuyệt vời. Bạn cần phải có này đánh dấu ở đâu đó. Bạn sẽ muốn nó cho đầu tiên giữa kỳ của bạn. Tôi chắc rằng mọi người đều có này biểu đồ trên bảng giữa kỳ của họ. Vì vậy, tìm hiểu nó. Tình yêu nó. Giữ cho nó tiện dụng. Nó sẽ có ích. Và tất cả đó là là một loại mã hóa mà các bản đồ chữ cái, số, và các nhân vật khác số lượng cho máy tính của chúng tôi. Vì tất nhiên, trong kết thúc, tất cả mọi thứ chúng tôi lưu trữ sẽ được chuyển đổi xuống zero và những người thân, vì vậy chúng tôi cần một số cách để đại diện cho văn bản và nhân vật mà tất cả chúng ta được sử dụng để nhìn thấy như một số loại số. Vì vậy, như chúng ta thấy ở đây, chúng tôi có chữ hoa A, đó là phải có. Đó là 65. Và chữ thường A là 97. Vì vậy, bạn có thể tìm out-- như tôi đã nói trước đó, nếu bạn đã có mảng nhiều chuỗi, những gì mỗi người có một terminator null. Nó sẽ là một không gian. Không gian có special-- riêng của mình Tôi quên nơi nó là ở đây. Ah. 32 là không gian. Vì vậy, tất cả mọi thứ bản đồ đó. Vì vậy, chúng ta có toán ASCII. Pro tip-- trong Vigenere của, bạn có thể bị cám dỗ để chuyển đổi số của bạn đến số nguyên, nhưng đó là thực hành thực sự tốt hơn để có thể sử dụng nhân vật như thế này khi bạn đang thực sự thao tác chúng. Vì vậy, nếu bạn muốn sử dụng số điện thoại, bạn có thể. Nhưng một cách tốt hơn, hoặc một cách mà chúng ta có xu hướng thích các bạn để làm điều đó, là cách này, nơi bạn thực sự trừ ký tự. Vì vậy, tôi muốn các bạn để loại hình này ra ngoài. Tại sao bạn không thử mỗi một khác? Vì vậy, một trong những đầu tiên, một phần ba, và một phần năm. Bởi vì tôi muốn chắc chắn rằng chúng ta nói về tất cả mọi thứ chúng ta cần nói chuyện về. Tôi chỉ muốn nói, một trong những điều quan trọng đối với: oh chờ đợi, các bạn đã không nhìn thấy một này. OK để làm đầu tiên ba. Hãy làm điều đó. Bởi vì chúng ta phải nói về modulo. Tôi biết. Toán là khó khăn. Bạn có thể sử dụng một máy tính. Đó là OK. Hoặc kéo lên một bảng mã ASCII, bởi vì có lẽ bạn sẽ muốn điều đó. Cool. Vì vậy, tôi sẽ nhanh chóng đi bộ các bạn thông qua các. Vì vậy, người dân đã kéo lên bảng ASCII? Số của chúng tôi là gì số cho chữ thường A? HỌC SINH: Bảy. ALLISON: Vì vậy, chữ thường A là 97 và chữ hoa A là 65. Vì vậy, 97 trừ đi 65? Đung 32? ALLISON: 62, yeah. Vì vậy, trong trường hợp này, những gì nó sẽ in ra? Đó là một đầu tiên? Nếu chúng ta có phần trăm d, những gì mà có biết? HỌC SINH: Một số. ALLISON: Chúng tôi đang in ra một số thực tế. Vì vậy, chúng tôi đang thực sự đi để in ra 32 ở đây. Và nếu điều này là phần trăm c, 32 sẽ cung cấp cho chúng ta một không gian. Vì vậy, sự hiểu biết rằng nhân vật có thể được in cả hai như là con số và như các nhân vật thực tế là thực sự quan trọng, và thanh toán chú ý đến các loại thực tế rằng chúng ta đang làm ở đây. Cool. Vì vậy, mỗi một khác trong số này, được những gì chúng ta sẽ được in ấn? HỌC SINH: Một nhân vật. ALLISON: Một nhân vật. Cool. Vì vậy, nếu các bạn muốn biết, bạn có thể làm việc này ra ngoài một mình. Nếu bạn đang gặp khó khăn, gửi email cho tôi. Nhưng điều thứ hai sẽ in ra một chữ thường b. Người thứ ba sẽ in ra một chữ hoa B. thứ tư một sẽ in ra một chữ hoa C, và cuối cùng sẽ là một chữ thường A. Và one-- cuối cùng chúng tôi đang thực sự đi để có được vào những gì mà phần trăm điên dấu hiệu có nghĩa là thậm chí trong một vài slide. Vì vậy, những cố gắng trên của riêng bạn. Nếu bạn gặp khó khăn, hãy đến nói chuyện với tôi. Nếu bạn thường trong Adams hội trường D, có thể bạn sẽ tìm thấy tôi xung quanh. Vì vậy, atoi. Làm thế nào nhiều bạn đã nhìn thấy điều này chức năng hoặc nghe nói về nó ở tất cả? Bất cứ ai? Cool. Vì vậy, những gì nó thực sự đứng cho là ASCII để nguyên. Vì vậy, những gì bạn có thể làm là, với Caesar, cho những người đọc spec, bạn đang đi để làm dấu chấm dấu gạch chéo Caesar sau khi bạn viết chương trình của bạn, và sau đó bạn sẽ đầu vào một số số mà bạn muốn để mã hóa thông điệp bí mật của bạn với. Nhưng, nếu chúng ta nhớ rằng, tất cả chúng tôi đầu vào được lưu trữ như dây đàn. Phải không? Chúng tôi có một mảng v arg đó là tất cả các chuỗi loại. Vì vậy, nếu bạn chỉ cần cố gắng để kéo một, nó sẽ nghĩ rằng một hoặc bất cứ số bạn sử dụng thực sự là một nhân vật. Vì vậy, bạn sẽ nhận được một số kết quả điên. Vì vậy, nếu bạn thực sự muốn biến này vào một số nguyên mà bạn có thể sử dụng để thao tác từ của bạn hoặc tin nhắn của bạn, bạn sẽ muốn sử dụng atoi. atoi chỉ chuyển đổi chuỗi của bạn đến một int. Vì vậy, nếu chúng ta có một chuỗi 12, nếu chúng ta gọi atoi trên 12, hoặc bất cứ điều gì đầu vào đó là, nó sẽ thực sự trở lại cho bạn các số nguyên. Không phải là nhân vật hoặc chuỗi 12. Trong đó, khi bạn bắt đầu phải bổ sung vào con số, sẽ rất khác nhau, bởi vì chuỗi 12 là một số số điên trong ASCII, nhưng các số nguyên 12 thực sự là 12, đó là những gì bạn muốn. Vì vậy, bạn muốn chắc chắn để sử dụng atoi. Bạn sẽ muốn điều này trong Caesar, bởi vì bạn cần int được cung cấp bởi người sử dụng trong dòng lệnh. Nhưng khi họ đặt nó trong lệnh dòng, nó được lưu trữ như là một chuỗi để bắt đầu với. Điều đó có ý nghĩa? Bạn không nhất thiết phải cần điều này cho Vigenere. Với Vigenere, như tôi đã nói trước đó, bạn nên cố gắng và sử dụng ASCII toán học mà trông giống như này, nơi bạn đang thực sự sử dụng các ký tự mà chúng ta đang trao cho bạn. Cool. Tất cả mọi người tốt không? Tuyệt vời. Vì vậy, theo modulo. Vì vậy, nếu bạn đang đưa ra số lượng lớn này cho Caesar? Bạn có ý tưởng này mà nếu bạn đang ở Z và bạn đưa ra một số hai, có nghĩa là bạn need-- Z trở thành thứ hai thư sau khi chính nó, phải không? Vì vậy, bạn cần phải bằng cách nào đó quấn xung quanh, và modulo là cách để làm điều đó. Vì vậy, tất cả nó là nó cung cấp cho bạn phần còn lại các bộ phận của số đầu tiên của thứ hai. Và chúng tôi có một số ví dụ để làm cho rằng một chút cụ thể hơn. Nhưng về cơ bản, bạn sử dụng modulo khi bạn muốn làm một cái gì đó bọc xung quanh. Vì vậy, nếu bạn chỉ muốn số một đến tám, bạn có thể sử dụng trên bất kỳ modulo khác số, và nó sẽ luôn luôn trả lại một số từ số không đến tám. Vì vậy, một số examples-- nếu chúng tôi có 55 modulo 10, nó chỉ cung cấp cho bạn phần còn lại của 55 chia cho 10, đó sẽ là 5. Và sau đó ba modulo năm, ai đoán những gì mà có được? Ba. Vì vậy, nếu bạn có một số lượng nhỏ hơn trước modulo, nó không thể đi trong đồng đều. Đó là zero. Vì vậy, nó chỉ trả về số của chính nó. Vì vậy, tám modulo tám sẽ là gì? HỌC SINH: Zero. ALLISON: Zero. Bởi vì nó đi vào đều. 16 modulo 15? Đung One. ALLISON: Cool. Và rồi cuối cùng này chỉ là để hiện you-- bạn có thể tự hỏi, OK, thứ tự của các hoạt động ở đây là gì? Làm chúng ta chia đầu tiên? Chúng ta có modulo đầu tiên? Vì vậy, theo modulo giữ cùng độ ưu tiên như bộ phận hay nhân, và kết trái của nó. Vì vậy, nó trong cùng một cách. Bạn sẽ luôn luôn làm dấu ngoặc đơn, sau đó nhân, chia, và modulo theo thứ tự từ trái sang phải. Vì vậy, quy tắc tiêu chuẩn. Chỉ cần đặt nó trong cùng thể loại như phân chia và nhân giống. Vì vậy, trong trường hợp này, chúng tôi sẽ có 1 cộng với 2 cho chúng ta 3. Chúng tôi nhân rằng bằng 2, do đó chúng tôi nhận được 6. Chúng tôi modulo rằng bằng 2, mà cho chúng ta? HỌC SINH: 0. ALLISON: 0. Và sau đó chúng tôi thêm 2, vì vậy chúng tôi nhận được 2 trong trường hợp cuối cùng này. Vì vậy, modulo-- bạn chắc chắn sẽ suy nghĩ về cách để kết hợp rằng khi bạn đang gói xung quanh bảng chữ cái. Nếu bạn đang ở Z và bạn cần phải di chuyển chuyển tiếp ba không gian để có được C, có mà toàn bộ khái niệm của gói xung quanh. Vì vậy, tôi sẽ để lại nó cho các bạn để tìm ra cách chính xác bạn sẽ được sử dụng nó. Nhưng chắc chắn là một công cụ hữu ích cho pset của bạn trong tuần này. Tôi thực sự như thế này. Đây là một trong psets yêu thích của tôi. Sau đó, sau khi bạn làm điều đó, nếu bạn có bạn bè, bạn có thể, như thế, gửi từng bí mật khác thông điệp và chắc chắn rằng nó hoạt động. Bởi vì nó sẽ giải mã nó hoặc bất cứ điều gì. Rất nhiều niềm vui. Và đó là kết thúc của phần. Tôi đã hoàn thành sớm. Tôi vẫn còn có 15 phút với các bạn, vì vậy nếu có bất cứ điều gì mà bạn muốn đi qua hơn nữa, tôi muốn được hạnh phúc để làm điều đó. Bất kỳ câu hỏi khác trên pset của bạn cho những người bạn đã bắt đầu hoặc đọc spec. Bất cứ điều gì mà chúng tôi đã nói chuyện về trong những giờ cuối và 15 phút mà bạn muốn tôi để loại rehash, tôi muốn được hạnh phúc. Hoặc chúng ta có thể gọi nó là tha, và bạn có thể tất cả lại và đưa kẹo nhiều hơn với bạn như bạn đi. Nhưng nếu có bất kỳ kéo dài câu hỏi, xin vui lòng cho tôi biết. Bạn cũng có thể đi lên và nói chuyện với tôi sau đó. Tôi hứa tôi không cắn. Bất cứ điều gì khác? Tất cả mọi người là tốt? Cảm giác của mọi người như họ có thể xử lý pset này? Bạn sẽ là chàng trai tốt. Văn phòng giờ là có một lý do. Cool. Được rồi. Vâng, trong trường hợp đó, cảm ơn tất cả các bạn rất nhiều vì đã đến. Tôi hy vọng sẽ nhìn thấy bạn trong tuần tới. Sẽ có thêm kẹo. Có thể có những điều thú vị khác. Và tôi mong muốn nhận được để biết tất cả các bạn trong năm nay.