[Chơi nhạc] ZAMYLA CHAN: Bạn có thích được 10.000.000 $ ngay bây giờ hoặc nhận đồng xu mỗi ngày của tháng, nơi mỗi ngày tiếp theo, bạn nhận được tăng gấp đôi số lượng đồng xu bạn nhận được một ngày trước? Trong đồng xu, chúng ta sẽ chứng minh lý do tại sao bạn nên chắc chắn lấy các đồng xu. Công việc của bạn là viết pennies.c-- một chương trình đầu tiên yêu cầu người dùng như thế nào nhiều ngày có trong tháng và sau đó yêu cầu bao nhiêu đồng xu cho người sử dụng sẽ nhận được vào ngày đầu tiên. Chương trình sau đó phải tính toán số tiền mà người sử dụng sẽ có tích lũy ở cuối tháng và hiển thị nó. Chúng tôi có thể phá vỡ chương trình này lên vào một vài nhiệm vụ. Chúng tôi sẽ cần phải nhắc nhở cho nhiều đầu vào người sử dụng - ngày tháng, và đồng xu trong ngày đầu tiên. Chúng ta cần phải theo dõi bao nhiêu tiền người dùng có và cập nhật nó mỗi ngày, tăng gấp đôi số lượng đồng xu mà họ nhận được. Và cuối cùng, chúng tôi in của họ tổng số cuối cùng, bằng đô la. Chúng ta hãy giải quyết đầu vào sử dụng đầu tiên. Tôi sẽ mở ra apples.c, chương trình ngắn mà những giao dịch với đầu vào và đầu ra. Ở phía trên đây, tôi đã bao gồm một số các thư viện mà tôi cần - Thư viện CS50 và một tiêu chuẩn I / O thư viện. Tôi in một dấu nhắc sử dụng chức năng printf từ thư viện I / O chuẩn. Nhưng thực tế thúc đẩy của người sử dụng xảy ra trong các dòng tiếp theo với điều này Chức năng getInt trong thư viện CS50. GetInt có được đầu vào từ người sử dụng và đảm bảo rằng các đầu vào là một số nguyên. Vì vậy, tôi lưu trữ đầu vào của người dùng vào số nguyên i, trừ đi 1 từ tôi, và sau đó in ra các giá trị mới nếu tôi. Sau khi biên dịch apples.c sử dụng lệnh "làm cho táo," Tôi có một tập tin thực thi táo. Chạy đó, tôi sẽ đầu vào 1. Chương trình nói với tôi rằng Tôi có 0 táo lại. Và để làm việc như mong đợi. Vì vậy, chúng ta hãy chạy này một lần nữa và đầu vào tiêu cực 1. Bây giờ, có một số lượng tiêu cực của quả táo không thực sự có ý nghĩa, nhưng chương trình chấp nhận nó, bởi vì tiêu cực 1, tốt, nó là một số nguyên. Và bây giờ chương trình, con quái vật trong chương trình ăn một tiêu cực táo, và bây giờ tôi có tiêu cực 2 quả táo. Hm, vì vậy đó là một bài học - mặc dù chức năng và getInt chức năng liên quan, như GetFlow hoặc GetString nhận được các loại dữ liệu bên phải, bạn phải đảm bảo rằng các đầu vào làm cho ý nghĩa đối với chương trình của bạn. Trong đồng xu, nó sẽ không làm chỉ là một dấu nhắc cho một số nguyên, bạn sẽ cần phải thực hiện đảm bảo rằng người sử dụng đầu vào một số nguyên đó có ý nghĩa trong bối cảnh. Tháng chỉ có thể có 28, 29, 30, hoặc 31 ngày. Chúng tôi muốn tiếp tục yêu cầu một số nguyên hợp lệ. Nếu họ nhập vào một số nguyên bên ngoài của chúng tôi giới hạn được chấp nhận, chúng tôi sẽ nhắc chúng một lần nữa và một lần nữa, cho đến khi bạn cung cấp cho chúng tôi một số nguyên hợp lệ. Nhớ lại những "lặp lại cho đến khi" chặn trong Scratch? Bạn có thể làm cho một cấu trúc tương tự trong C bằng cách sử dụng "trong khi" vòng lặp hoặc "do-trong khi" vòng lặp. Các cấu trúc vòng lặp trong khi có điều kiện phải được đáp ứng cho thân của vòng lặp để thực thi. Bạn có thể thấy một chút tương tự, bởi vì điều kiện là giống như Khối đầu với các góc và đi vào khung của "trong khi" vòng lặp. Vì vậy, tình trạng đó sẽ kiểm tra xem các số nguyên là trong giới hạn thích hợp. Bạn có thể nhắc nhở người sử dụng số nguyên getInt và sau đó thực hiện "trong khi" của bạn vòng lặp, lặp đi lặp lại nhanh chóng và in ấn hướng dẫn, trong khi đầu vào là không hợp lệ. Một cách khác để đảm bảo đầu vào người sử dụng đúng là sử dụng một "do-trong khi" vòng lặp, đó là rất giống với một vòng lặp Trong khi. Những "do-trong khi" vòng lặp thực thi mã trong những cơ thể và sau đó kiểm tra có điều kiện được đáp ứng hay không. Điều này rất hữu ích cho việc thu thập người sử dụng, bởi vì bạn biết rằng bạn cần để nhắc nhở họ ít nhất một lần. Nếu tình trạng này không được đáp ứng, các chương trình sẽ thực thi các dòng sau của bạn "do-trong khi" vòng lặp. Nếu điều kiện được đáp ứng, mặc dù vòng lặp sẽ lặp lại Một "do-trong khi" vòng lặp để xác nhận người dùng đầu vào sẽ giống như thế này. Tôi tuyên bố một biến n, getInt, và sau đó lặp lại cho đến khi n là hợp lệ. Và quá trình này, tôi đã giải thích, đã được sử dụng các loại nguyên dữ liệu, mà bạn sẽ sử dụng cho các ngày trong tháng. Nhưng chúng ta biết rằng số lượng đồng xu sẽ chồng chất lên một cách nhanh chóng, vì vậy để lưu trữ số lượng lớn hơn, sử dụng các loại dữ liệu LongLong, nhưng nhớ cùng nguyên tắc xác nhận áp dụng. Tuyệt vời, vì vậy khi chúng tôi có hai hợp lệ đầu vào từ người sử dụng - ngày trong tháng và các đồng xu vào ngày đầu tiên - chúng ta có thể chuyển sang tiếp theo một phần của chương trình. Ngày đầu tiên, người dùng bắt đầu với tuy nhiên nhiều đồng xu họ quy định và số lượng đồng xu mà họ nhận được vào ngày hôm sau là tăng gấp đôi. Vì vậy, nó làm cho tinh thần để theo dõi của hai lượng này - bao nhiêu tiền người sử dụng có và làm thế nào nhiều đồng xu, họ sẽ được đưa ra. Bây giờ, làm một cái gì đó trong 28 đến 31 ngày lặp đi lặp lại, vì vậy hãy sử dụng "cho" vòng lặp để duyệt qua các ngày trong tháng, cập nhật tổng số và xu số tiền mỗi lần. "Đối với" cú pháp vòng lặp chứa sau - một khởi tạo, một điều kiện, và một bản cập nhật. Của bạn "cho" vòng lặp sẽ khởi tạo một biến, khi nó đầu tiên vào vòng lặp. Nếu điều kiện được đáp ứng, cơ thể của vòng lặp sẽ thực thi. Sau đó, bản cập nhật sẽ thực hiện. Nếu tình trạng này vẫn đáp ứng, vòng lặp sẽ thực hiện và cập nhật, và lặp lại, miễn là tình trạng của bạn đánh giá đúng sự thật. Dưới đây là một "cho" vòng lặp chia một một số p 2 có tổng cộng 10 lần. Lưu ý làm thế nào tôi tuyên bố p số nguyên bên ngoài "cho" tôi lặp, do đó, số nguyên có thể được truy cập bên ngoài "cho" vòng lặp. Sau tháng đã trôi qua, đó là thời gian để cho người sử dụng bao nhiêu tiền họ đã nhận được. Theo các thông số, bạn cần phải nói cho người dùng bao nhiêu đô la, không bao nhiêu đồng xu, họ có. Nhưng cho đến nay, bạn đã lưu giữ theo dõi của tổng số và các đồng xu bằng LongLongs, đó là số nguyên. Có một đồng xu 100 đến $ 1, do đó, trừ số lượng đồng xu là một bội số của 100, bạn sẽ cần phải đại diện cho chữ số thập phân. Các bản mô tả cho phép tăng gấp đôi bạn làm điều này. Vì vậy, làm thế nào để chúng ta chuyển đổi từ đại diện đồng xu để đô la? Chúng ta hãy có một cái nhìn pi.c. Chương trình này có một big_pi LongLong và chia nó bằng 100.000, và in kết quả đến năm chữ số thập phân. Nếu chúng ta muốn hiển thị bốn số thập phân địa điểm, sau đó chúng tôi chỉ có thể thay thế này số đây. Vì vậy hãy tiết kiệm, biên dịch pi, và sau đó xem kết quả, mà chúng tôi hy vọng sẽ được 3,1415 - năm chữ số đầu tiên của số pi. Nó không phải là mặc dù. Và tại sao? Vâng, bởi vì big_pi là một LongLong, đó là một số nguyên, mà sẽ không theo dõi các số thập phân. Việc sửa đổi tôi cần phải thực hiện là trong bộ phận. Tôi cần phải cast đến một đôi trước đây phân chia, vì đôi không thể giữ theo dõi các chữ số thập phân. Và tôi sẽ thêm một dòng mới đây để định dạng hơn. Và ở đây chúng tôi đã có nó - 3.1416. Bạn có thể nhận thấy rằng nó in 3.1416 thay vì 3,1415 như mong đợi. Đó là bởi vì nó vòng trong quá trình phân chia, như trái ngược với chỉ cắt xén giá trị. Bây giờ bạn sẽ có thể in tổng số cuối cùng chính xác, mà kết thúc chương trình. Xin chúc mừng. Tên tôi là Zamyla. Và đây là đồng xu. [Chơi nhạc]