Skip to content · ⁨Bỏ qua nội dung⁩

Creative Development · ⁨Phát triển Sáng tạo⁩

AP Computer Science Principles · ⁨AP Nguyên lý khoa học máy tính⁩ · Topic 1 · ⁨Chủ đề 1⁩

Video lesson for this topic · ⁨Bài học video cho chủ đề này⁩ Open the video page · ⁨Mở trang video⁩
6:15

Phát triển Sáng tạo

Đây là một chương trình nên in trung bình cộng của hai số. Nó chạy. Nó không bị sập. Nó in ra một đáp án — và đáp án sai. Cho nó bốn và sáu…

English narration · English + 中文 subtitles burned in · ⁨Giọng đọc tiếng Anh · phụ đề tiếng Anh + 中文 được ghi trực tiếp⁩

1.1

Collaboration · ⁨Hợp Tác⁩

Syllabus · ⁨Chương trình⁩
English

Enduring Understanding (CRD-1): Incorporating multiple perspectives through collaboration improves computing innovations as they are developed.

Learning Objective CRD-1.A: Explain how computing innovations are improved through collaboration. [Skill 1.C]

  • CRD-1.A.1 A computing innovation includes a program as an integral part of its function.
  • CRD-1.A.2 A computing innovation can be physical (e.g., self-driving car), nonphysical computing software (e.g., picture editing software), or a nonphysical computing concept (e.g., e-commerce).
  • CRD-1.A.3 Effective collaboration produces a computing innovation that reflects the diversity of talents and perspectives of those who designed it.
  • CRD-1.A.4 Collaboration that includes diverse perspectives helps avoid bias in the development of computing innovations.
  • CRD-1.A.5 Consultation and communication with users are important aspects of the development of computing innovations.
  • CRD-1.A.6 Information gathered from potential users can be used to understand the purpose of a program from diverse perspectives and to develop a program that fully incorporates these perspectives.

Learning Objective CRD-1.B: Explain how computing innovations are developed by groups of people. [Skill 1.C]

  • CRD-1.B.1 Online tools support collaboration by allowing programmers to share and provide feedback on ideas and documents.
  • CRD-1.B.2 Common models such as pair programming exist to facilitate collaboration.

Learning Objective CRD-1.C: Demonstrate effective interpersonal skills during collaboration. [Skill 1.C]

  • CRD-1.C.1 Effective collaborative teams practice interpersonal skills, including but not limited to:
    • communication
    • consensus building
    • conflict resolution
    • negotiation
Tiếng Việt

Hiểu biết bền vững (CRD-1): Việc tích hợp nhiều góc nhìn khác nhau thông qua hợp tác giúp cải thiện các sáng kiến công nghệ khi chúng được phát triển.

Mục tiêu học tập CRD-1.A: Giải thích cách các sáng kiến công nghệ được cải thiện thông qua sự hợp tác. [Kỹ năng 1.C]

  • CRD-1.A.1 Một sáng kiến công nghệ bao gồm một chương trình như một phần thiết yếu trong chức năng của nó.
  • CRD-1.A.2 Một sáng kiến công nghệ có thể là vật lý (ví dụ: ô tô tự lái), phần mềm máy tính phi vật lý (ví dụ: phần mềm chỉnh sửa ảnh), hoặc khái niệm máy tính phi vật lý (ví dụ: thương mại điện tử).
  • CRD-1.A.3 Sự hợp tác hiệu quả tạo ra một sáng kiến công nghệ phản ánh sự đa dạng về tài năng và góc nhìn của những người đã thiết kế ra nó.
  • CRD-1.A.4 Sự hợp tác bao gồm nhiều góc nhìn khác nhau giúp tránh thiên kiến trong quá trình phát triển các sáng kiến công nghệ.
  • CRD-1.A.5 Tham vấn và giao tiếp với người dùng là những khía cạnh quan trọng trong quá trình phát triển các sáng kiến công nghệ.
  • CRD-1.A.6 Thông tin thu thập được từ người dùng tiềm năng có thể được sử dụng để hiểu mục đích của một chương trình dưới nhiều góc nhìn khác nhau và để phát triển một chương trình tích hợp đầy đủ các góc nhìn này.

Mục tiêu học tập CRD-1.B: Giải thích cách các sáng kiến công nghệ được phát triển bởi các nhóm người. [Kỹ năng 1.C]

  • CRD-1.B.1 Các công cụ trực tuyến hỗ trợ hợp tác bằng cách cho phép các lập trình viên chia sẻ và cung cấp phản hồi về ý tưởng và tài liệu.
  • CRD-1.B.2 Các mô hình phổ biến như lập trình cặp đôi tồn tại để thuận tiện cho sự hợp tác.

Mục tiêu học tập CRD-1.C: Chứng minh các kỹ năng giao tiếp cá nhân hiệu quả trong quá trình hợp tác. [Kỹ năng 1.C]

  • CRD-1.C.1 Các đội hợp tác hiệu quả thực hành các kỹ năng giao tiếp cá nhân, bao gồm nhưng không giới hạn ở:
    • giao tiếp
    • xây dựng đồng thuận
    • giải quyết xung đột
    • đàm phán

Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

English

Computing is a collaborative 协作 activity. Working in a team brings more perspectives, catches more errors, and produces better programs than working alone. Good collaboration uses consensus building, clear communication, and each member's strengths. Pair programming 结对编程 – two people at one computer, one typing and one reviewing – is a common practice. On the exam, you should be able to explain how collaboration improved a program (more ideas, fewer bugs, wider testing).

Tiếng Việt
Một puzzle đang được lắp ghép: sự hợp tác và thiết kế mô-đun chắp vá lại lời giải
Một mảnh ghép đang được hoàn thiện: hợp tác và thiết kế mô-đun lắp ráp giải pháp lại với nhau

Tin học là một hoạt động hợp tác. Làm việc theo nhóm mang lại nhiều góc nhìn hơn, phát hiện nhiều lỗi hơn và tạo ra chương trình tốt hơn so với làm việc đơn lẻ. Hợp tác hiệu quả sử dụng xây dựng sự đồng thuận, giao tiếp rõ ràng và tận dụng thế mạnh của từng thành viên. Lập trình cặp đôi – hai người cùng một máy tính, một người gõ phím và một người xem xét – là thực hành phổ biến. Trong kỳ thi, bạn cần có khả năng giải thích làm thế nào sự hợp tác đã cải thiện một chương trình (nhiều ý tưởng hơn, ít lỗi hơn, kiểm tra rộng hơn).

1.2

Program Function and Purpose · ⁨Chức Năng và Mục Đích Của Chương Trình⁩

Syllabus · ⁨Chương trình⁩
English

Enduring Understanding (CRD-2): Developers create and innovate using an iterative design process that is user-focused, that incorporates implementation/feedback cycles, and that leaves ample room for experimentation and risk-taking.

Learning Objective CRD-2.A: Describe the purpose of a computing innovation. [Skill 1.A]

  • CRD-2.A.1 The purpose of computing innovations is to solve problems or to pursue interests through creative expression.
  • CRD-2.A.2 An understanding of the purpose of a computing innovation provides developers with an improved ability to develop that computing innovation.

Learning Objective CRD-2.B: Explain how a program or code segment functions. [Skill 4.A]

  • CRD-2.B.1 A program is a collection of program statements that performs a specific task when run by a computer. A program is often referred to as software.
  • CRD-2.B.2 A code segment is a collection of program statements that is part of a program.
  • CRD-2.B.3 A program needs to work for a variety of inputs and situations.
  • CRD-2.B.4 The behavior of a program is how a program functions during execution and is often described by how a user interacts with it.
  • CRD-2.B.5 A program can be described broadly by what it does, or in more detail by both what the program does and how the program statements accomplish this function.

Learning Objective CRD-2.C: Identify input(s) to a program. [Skill 3.A]

  • CRD-2.C.1 Program inputs are data sent to a computer for processing by a program. Input can come in a variety of forms, such as tactile, audio, visual, or text.
  • CRD-2.C.2 An event is associated with an action and supplies input data to a program.
  • CRD-2.C.3 Events can be generated when a key is pressed, a mouse is clicked, a program is started, or any other defined action occurs that affects the flow of execution.
  • CRD-2.C.4 Inputs usually affect the output produced by a program.
  • CRD-2.C.5 In event-driven programming, program statements are executed when triggered rather than through the sequential flow of control.
  • CRD-2.C.6 Input can come from a user or other programs.

Learning Objective CRD-2.D: Identify output(s) produced by a program. [Skill 3.A]

  • CRD-2.D.1 Program outputs are any data sent from a program to a device. Program output can come in a variety of forms, such as tactile, audio, visual, or text.
  • CRD-2.D.2 Program output is usually based on a program's input or prior state (e.g., internal values).
Tiếng Việt

Hiểu biết bền vững (CRD-2): Các nhà phát triển tạo ra và đổi mới bằng quy trình thiết kế lặp lại lấy người dùng làm trung tâm, bao gồm các chu kỳ triển khai/phản hồi, và để lại nhiều không gian cho việc thử nghiệm và chấp nhận rủi ro.

Mục tiêu học tập CRD-2.A: Mô tả mục đích của một sáng kiến công nghệ. [Kỹ năng 1.A]

  • CRD-2.A.1 Mục đích của các sáng kiến công nghệ là giải quyết các vấn đề hoặc theo đuổi sở thích thông qua sự sáng tạo.
  • CRD-2.A.2 Hiểu rõ mục đích của một sáng kiến công nghệ mang lại cho các nhà phát triển khả năng tốt hơn trong việc phát triển sáng kiến đó.

Mục tiêu học tập CRD-2.B: Giải thích cách một chương trình hoặc đoạn mã hoạt động. [Kỹ năng 4.A]

  • CRD-2.B.1 Chương trình là một tập hợp các câu lệnh chương trình thực hiện một nhiệm vụ cụ thể khi chạy trên máy tính. Một chương trình thường được gọi là phần mềm.
  • CRD-2.B.2 Đoạn mã là một tập hợp các câu lệnh chương trình là một phần của một chương trình.
  • CRD-2.B.3 Một chương trình cần hoạt động tốt cho nhiều loại dữ liệu đầu vào và tình huống khác nhau.
  • CRD-2.B.4 Hành vi của một chương trình là cách chương trình hoạt động trong quá trình thực thi và thường được mô tả thông qua cách người dùng tương tác với nó.
  • CRD-2.B.5 Một chương trình có thể được mô tả một cách tổng quát bằng những gì nó làm, hoặc chi tiết hơn bằng cả những gì chương trình làm và các câu lệnh trong chương trình thực hiện chức năng này như thế nào.

Mục tiêu học tập CRD-2.C: Xác định đầu vào của một chương trình. [Kỹ năng 3.A]

  • CRD-2.C.1 Đầu vào chương trình là dữ liệu được gửi đến máy tính để xử lý bởi một chương trình. Dữ liệu đầu vào có thể đến từ nhiều dạng khác nhau, chẳng hạn như xúc giác, âm thanh, hình ảnh hoặc văn bản.
  • CRD-2.C.2 Một sự kiện gắn liền với một hành động và cung cấp dữ liệu đầu vào cho một chương trình.
  • CRD-2.C.3 Sự kiện có thể được tạo ra khi một phím được nhấn, chuột được nhấp, chương trình được khởi chạy, hoặc bất kỳ hành động nào khác được xác định xảy ra ảnh hưởng đến luồng thực thi.
  • CRD-2.C.4 Dữ liệu đầu vào thường ảnh hưởng đến kết quả mà một chương trình tạo ra.
  • CRD-2.C.5 Trong lập trình dựa trên sự kiện, các câu lệnh chương trình được thực thi khi bị kích hoạt thay vì thông qua luồng điều khiển tuần tự.
  • CRD-2.C.6 Dữ liệu đầu vào có thể đến từ người dùng hoặc các chương trình khác.

Mục tiêu học tập CRD-2.D: Xác định đầu ra được tạo ra bởi một chương trình. [Kỹ năng 3.A]

  • CRD-2.D.1 Đầu ra chương trình là bất kỳ dữ liệu nào được gửi từ một chương trình đến một thiết bị. Kết quả đầu ra của chương trình có thể đến từ nhiều dạng khác nhau, chẳng hạn như xúc giác, âm thanh, hình ảnh hoặc văn bản.
  • CRD-2.D.2 Kết quả đầu ra của chương trình thường dựa trên dữ liệu đầu vào của chương trình hoặc trạng thái trước đó (ví dụ: các giá trị nội bộ).

Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

English

Every program is written for a purpose – it solves a problem or pursues an interest. A program takes input 输入, processes it, and produces output 输出. Inputs can come from a user, a device, a file, or another program; outputs can be visual, audible, textual, or a signal to a device. Being able to state a program's purpose, and describe its inputs and outputs clearly, is a core skill (and part of the Create performance task).

Tiếng Việt

Mỗi chương trình đều được viết vì một mục đích – nó giải quyết một vấn đề hoặc theo đuổi một sở thích. Một chương trình nhận dữ liệu đầu vào, xử lý nó, và tạo ra dữ liệu đầu ra. Dữ liệu đầu vào có thể đến từ người dùng, thiết bị, tệp hoặc chương trình khác; dữ liệu đầu ra có thể trực quan, âm thanh, văn bản hoặc tín hiệu gửi đến thiết bị. Khả năng nêu mục đích của chương trình, và mô tả rõ ràng dữ liệu đầu vào và đầu ra của nó là kỹ năng cốt lõi (và là một phần của nhiệm vụ sáng tạo).

Mọi chương trình đều phân rã thành đầu vào, xử lý và đầu ra
Mỗi chương trình đều phân rã thành dữ liệu đầu vào, xử lý và dữ liệu đầu ra
Mọi chương trình đều tuân theo mô hình đầu vào - xử lý - đầu ra
Mỗi chương trình đều tuân theo mô hình đầu vào-xử lý-đầu ra
Explore · ⁨Khám phá⁩

Explore the input → processing → output model · ⁨Khám phá mô hình đầu vào → xử lý → đầu ra⁩

Step through the IPO model. Every program takes some input, performs processing on it by following its instructions, then produces output — trace one weather-app example along the pipeline. · ⁨Bước qua mô hình IPO. Mọi chương trình nhận một số đầu vào, thực hiện xử lý trên đó bằng cách tuân theo các hướng dẫn, sau đó tạo ra đầu ra — truy vết một ví dụ ứng dụng thời tiết dọc theo quy trình này.⁩

1.3

Program Design and Development · ⁨Thiết Kế và Phát Triển Chương Trình⁩

Syllabus · ⁨Chương trình⁩
English

Enduring Understanding (CRD-2): Developers create and innovate using an iterative design process that is user-focused, that incorporates implementation/feedback cycles, and that leaves ample room for experimentation and risk-taking.

Learning Objective CRD-2.E: Develop a program using a development process. [Skill 1.B]

  • CRD-2.E.1 A development process can be ordered and intentional, or exploratory in nature.
  • CRD-2.E.2 There are multiple development processes. The following phases are commonly used when developing a program:
    • investigating and reflecting
    • designing
    • prototyping
    • testing
  • CRD-2.E.3 A development process that is iterative requires refinement and revision based on feedback, testing, or reflection throughout the process. This may require revisiting earlier phases of the process.
  • CRD-2.E.4 A development process that is incremental is one that breaks the problem into smaller pieces and makes sure each piece works before adding it to the whole.

Learning Objective CRD-2.F: Design a program and its user interface. [Skill 1.B]

  • CRD-2.F.1 The design of a program incorporates investigation to determine its requirements.
  • CRD-2.F.2 Investigation in a development process is useful for understanding and identifying the program constraints, as well as the concerns and interests of the people who will use the program.
  • CRD-2.F.3 Some ways investigation can be performed are as follows:
    • collecting data through surveys
    • user testing
    • interviews
    • direct observations
  • CRD-2.F.4 Program requirements describe how a program functions and may include a description of user interactions that a program must provide.
  • CRD-2.F.5 A program's specification defines the requirements for the program.
  • CRD-2.F.6 In a development process, the design phase outlines how to accomplish a given program specification.
  • CRD-2.F.7 The design phase of a program may include:
    • brainstorming
    • planning and storyboarding
    • organizing the program into modules and functional components
    • creation of diagrams that represent the layouts of the user interface
    • development of a testing strategy for the program

Learning Objective CRD-2.G: Describe the purpose of a code segment or program by writing documentation. [Skill 4.A]

  • CRD-2.G.1 Program documentation is a written description of the function of a code segment, event, procedure, or program and how it was developed.
  • CRD-2.G.2 Comments are a form of program documentation written into the program to be read by people and do not affect how a program runs.
  • CRD-2.G.3 Programmers should document a program throughout its development.
  • CRD-2.G.4 Program documentation helps in developing and maintaining correct programs when working individually or in collaborative programming environments.
  • CRD-2.G.5 Not all programming environments support comments, so other methods of documentation may be required.

Learning Objective CRD-2.H: Acknowledge code segments used from other sources. [Skill 1.C]

  • CRD-2.H.1 It is important to acknowledge any code segments that were developed collaboratively or by another source.
  • CRD-2.H.2 Acknowledgement of a code segment(s) written by someone else and used in a program can be in the program documentation. The acknowledgement should include the origin or original author's name.
Tiếng Việt

Hiểu biết bền vững (CRD-2): Các nhà phát triển tạo ra và đổi mới bằng quy trình thiết kế lặp lại lấy người dùng làm trung tâm, bao gồm các chu kỳ triển khai/phản hồi, và để lại nhiều không gian cho việc thử nghiệm và chấp nhận rủi ro.

Mục tiêu học tập CRD-2.E: Phát triển một chương trình sử dụng quy trình phát triển. [Kỹ năng 1.B]

  • CRD-2.E.1 Một quy trình phát triển có thể được sắp xếp có chủ đích, hoặc mang tính chất khám phá.
  • CRD-2.E.2 Có nhiều quy trình phát triển khác nhau. Các giai đoạn sau đây thường được sử dụng khi phát triển một chương trình:
    • nghiên cứu và phản tư
    • thiết kế
    • tạo mẫu
    • kiểm thử
  • CRD-2.E.3 Một quy trình phát triển lặp lại yêu cầu tinh chỉnh và sửa đổi dựa trên phản hồi, kiểm thử hoặc phản tư trong suốt quá trình. Điều này có thể đòi hỏi việc quay lại các giai đoạn trước đó của quy trình.
  • CRD-2.E.4 Một quy trình phát triển tăng dần là quy trình chia nhỏ vấn đề thành các phần nhỏ hơn và đảm bảo mỗi phần hoạt động đúng trước khi thêm vào tổng thể.

Mục tiêu học tập CRD-2.F: Thiết kế một chương trình và giao diện người dùng của nó. [Kỹ năng 1.B]

  • CRD-2.F.1 Việc thiết kế một chương trình bao gồm nghiên cứu để xác định các yêu cầu của nó.
  • CRD-2.F.2 Nghiên cứu trong một quy trình phát triển hữu ích để hiểu và xác định các ràng buộc của chương trình, cũng như những mối quan tâm và sở thích của những người sẽ sử dụng chương trình.
  • CRD-2.F.3 Một số cách thức thực hiện nghiên cứu bao gồm các phương pháp sau:
    • thu thập dữ liệu thông qua khảo sát
    • kiểm thử người dùng
    • phỏng vấn
    • quan sát trực tiếp
  • CRD-2.F.4 Các yêu cầu của chương trình mô tả cách một chương trình vận hành và có thể bao gồm mô tả về các tương tác người dùng mà chương trình phải cung cấp.
  • CRD-2.F.5-alt specification của một chương trình xác định các yêu cầu đối với chương trình đó.
  • CRD-2.F.6 Trong một quy trình phát triển, giai đoạn thiết kế phác thảo cách thức thực hiện một-alt specification của chương trình đã cho.
  • CRD-2.F.7 Giai đoạn thiết kế của một chương trình có thể bao gồm:
    • brainstorming (tạo ý tưởng)
    • lên kế hoạch và storyboarding
    • tổ chức chương trình thành các module và thành phần chức năng
    • tạo các biểu đồ đại diện cho bố cục giao diện người dùng
    • phát triển chiến lược kiểm thử cho chương trình

Mục tiêu học tập CRD-2.G: Mô tả mục đích của một đoạn mã hoặc chương trình bằng cách viết tài liệu. [Kỹ năng 4.A]

  • CRD-2.G.1 Tài liệu chương trình là một bản mô tả bằng văn bản về chức năng của một đoạn mã, sự kiện, thủ tục hoặc chương trình và cách nó được phát triển.
  • CRD-2.G.2 Nhận xét (comments) là một dạng tài liệu chương trình được viết vào trong chương trình để con người đọc và không ảnh hưởng đến cách chương trình chạy.
  • CRD-2.G.3 Các lập trình viên nên ghi chú tài liệu cho chương trình trong suốt quá trình phát triển.
  • CRD-2.G.4 Tài liệu chương trình giúp trong việc phát triển và duy trì các chương trình chính xác khi làm việc cá nhân hoặc trong môi trường lập trình hợp tác.
  • CRD-2.G.5 Không phải tất cả các môi trường lập trình đều hỗ trợ nhận xét, do đó có thể cần các phương pháp tài liệu khác.

Mục tiêu học tập CRD-2.H: Ghi nhận các đoạn mã được sử dụng từ các nguồn khác. [Kỹ năng 1.C]

  • CRD-2.H.1 Việc ghi nhận bất kỳ đoạn mã nào được phát triển theo cách hợp tác hoặc bởi một nguồn khác là rất quan trọng.
  • CRD-2.H.2 Việc ghi nhận một đoạn mã (hoặc các đoạn mã) được viết bởi người khác và được sử dụng trong một chương trình có thể nằm trong tài liệu chương trình. Phần ghi nhận nên bao gồm nguồn gốc hoặc tên tác giả ban đầu.

Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

English

Programs are built through an iterative 迭代 process, not in one straight line: investigate the problem and users, design (often with a diagram or written plan), implement in code, and test – then repeat. A large problem is broken into smaller pieces (decomposition 分解). Comments 注释 and clear naming document the design so others (and your future self) can understand it. Development is incremental – build and test a small piece, then add the next.

Investigating what users actually need

Before any code is written, the developer investigates the problem and the people who will use the program. Three ways to do that:

  • surveys 调查问卷 sent to potential users, which collect data from many people quickly;
  • interviews and direct observation of users doing the task by hand;
  • studying existing solutions to see what already works and what frustrates people.

The findings are turned into a design. Two artefacts do that: a program requirements list saying exactly what the program must do, and diagrams representing the layout of the user interface 用户界面 — sketches showing which controls appear where, and what each one does when used. Designing the interface on paper first is cheaper than discovering after coding that the buttons are in the wrong place.

Events, and programs that wait

Not every program runs straight through from top to bottom. An event 事件 is generated when a key is pressed, a mouse is clicked, a program is started, or any other defined action occurs — and an event changes the flow of execution: the program pauses what it was doing and runs the code attached to that event, called an event handler 事件处理程序.

This is why a program with a graphical interface can appear to be doing nothing: it is waiting for the next event. The order in which those events arrive is decided by the user, not by the programmer, so the same program can run its blocks in a different order each time it is used.

Tiếng Việt
Một lập trình viên đang gỡ lỗi tại trạm làm việc đa màn hình — thiết kế và thử nghiệm lặp lại
Một lập trình viên gỡ lỗi tại trạm làm việc đa màn hình — thiết kế và thử nghiệm theo chu kỳ lặp

Các chương trình được xây dựng thông qua một quy trình lặp lại, không phải theo một đường thẳng: điều tra vấn đề và người dùng, thiết kế (thường với sơ đồ hoặc bản kế hoạch viết tay), triển khai bằng mã, và thử nghiệm – sau đó lặp lại. Một vấn đề lớn được chia nhỏ thành các phần nhỏ hơn (phân rã). Nhận xét và đặt tên rõ ràng tài liệu hóa thiết kế để những người khác (và chính bạn trong tương lai) có thể hiểu nó. Phát triển mang tính tăng tiến – xây dựng và thử nghiệm một phần nhỏ, sau đó thêm phần tiếp theo.

Các giai đoạn của phát triển chương trình, với thử nghiệm phản hồi để sửa chữa và tinh chỉnh
Các giai đoạn của phát triển chương trình, với thử nghiệm phản hồi để sửa chữa và tinh chỉnh
Phần mềm được xây dựng thông qua quy trình phát triển lặp lại, tăng tiến
Phần mềm được xây dựng thông qua quy trình phát triển lặp lại, tăng tiến

Điều tra xem người dùng thực sự cần gì

Trước khi bất kỳ mã nào được viết ra, nhà phát triển sẽ điều tra vấn đề và những người sẽ sử dụng chương trình. Có ba cách để làm điều đó:

  • bảng câu hỏi gửi đến những người dùng tiềm năng, thu thập dữ liệu từ nhiều người nhanh chóng;
  • cuộc phỏng vấn và quan sát trực tiếp người dùng thực hiện tác vụ bằng tay;
  • nghiên cứu các giải pháp hiện có để xem cái gì đã hoạt động và cái gì gây phiền toái cho mọi người.

Những phát hiện này được chuyển đổi thành thiết kế. Hai sản phẩm hoàn thiện việc đó: danh sách yêu cầu chương trình nêu rõ chính xác chương trình phải làm gì, và sơ đồ biểu diễn bố cục giao diện người dùng – các bản phác thảo cho thấy các điều khiển xuất hiện ở đâu, và mỗi thứ làm gì khi được sử dụng. Thiết kế giao diện trên giấy trước thì rẻ hơn nhiều so với việc phát hiện sau khi lập trình rằng các nút bấm đang ở vị trí sai.

Sự kiện, và các chương trình chờ đợi

Không phải chương trình nào cũng chạy thẳng từ đầu đến cuối. Một sự kiện được tạo ra khi một phím được nhấn, chuột được click, chương trình được khởi chạy, hoặc bất kỳ hành động định nghĩa nào khác xảy ra – và một sự kiện thay đổi luồng thực thi: chương trình tạm dừng những gì nó đang làm và chạy mã gắn liền với sự kiện đó, gọi là xử lý sự kiện.

Đây là lý do tại sao một chương trình có giao diện đồ họa có thể trông như đang làm gì đó: nó đang chờ sự kiện tiếp theo. Thứ tự mà những sự kiện này xuất hiện được quyết định bởi người dùng, không phải bởi lập trình viên, vì vậy cùng một chương trình có thể chạy các khối code theo thứ tự khác nhau mỗi lần được sử dụng.

Explore · ⁨Khám phá⁩

Loop through the iterative development process · ⁨Lặp qua quy trình phát triển lặp lại⁩

Development is iterative — you repeat the stages, improving the program a little on each pass. Step around the loop and notice it returns to the start rather than ending after one run. · ⁨Phát triển mang tính lặp lại — bạn lặp lại các giai đoạn, cải thiện chương trình một chút ở mỗi lần. Bước quanh vòng lặp và nhận thấy nó quay về điểm xuất phát thay vì kết thúc sau một lần chạy.⁩

1.4

Identifying and Correcting Errors · ⁨Xác định và Sửa lỗi⁩

Syllabus · ⁨Chương trình⁩
English

Enduring Understanding (CRD-2): Developers create and innovate using an iterative design process that is user-focused, that incorporates implementation/feedback cycles, and that leaves ample room for experimentation and risk-taking.

Learning Objective CRD-2.I: For errors in an algorithm or program: a. Identify the error. [Skill 4.C] b. Correct the error. [Skill 4.C]

  • CRD-2.I.1 A logic error is a mistake in the algorithm or program that causes it to behave incorrectly or unexpectedly.
  • CRD-2.I.2 A syntax error is a mistake in the program where the rules of the programming language are not followed.
  • CRD-2.I.3 A run-time error is a mistake in the program that occurs during the execution of a program. Programming languages define their own run-time errors.
  • CRD-2.I.4 An overflow error is an error that occurs when a computer attempts to handle a number that is outside of the defined range of values.
  • CRD-2.I.5 The following are effective ways to find and correct errors:
    • test cases
    • hand tracing
    • visualizations
    • debuggers
    • adding extra output statement(s)

Learning Objective CRD-2.J: Identify inputs and corresponding expected outputs or behaviors that can be used to check the correctness of an algorithm or program. [Skill 4.C]

  • CRD-2.J.1 In the development process, testing uses defined inputs to ensure that an algorithm or program is producing the expected outcomes. Programmers use the results from testing to revise their algorithms or programs.
  • CRD-2.J.2 Defined inputs used to test a program should demonstrate the different expected outcomes that are at or just beyond the extremes (minimum and maximum) of input data.
  • CRD-2.J.3 Program requirements are needed to identify appropriate defined inputs for testing.
Tiếng Việt

Hiểu biết bền vững (CRD-2): Các nhà phát triển tạo ra và đổi mới bằng quy trình thiết kế lặp lại lấy người dùng làm trung tâm, bao gồm các chu kỳ triển khai/phản hồi, và để lại nhiều không gian cho việc thử nghiệm và chấp nhận rủi ro.

Mục tiêu học tập CRD-2.I: Đối với các lỗi trong thuật toán hoặc chương trình: a. Xác định lỗi. [Kỹ năng 4.C] b. Sửa lỗi. [Kỹ năng 4.C]

  • CRD-2.I.1 Một lỗi logic là một sai sót trong thuật toán hoặc chương trình khiến nó hoạt động không đúng hoặc bất ngờ.
  • CRD-2.I.2 Một lỗi cú pháp là một sai sót trong chương trình nơi các quy tắc của ngôn ngữ lập trình không được tuân thủ.
  • CRD-2.I.3 Một lỗi thời gian chạy là một sai sót trong chương trình xảy ra trong quá trình thực thi chương trình. Các ngôn ngữ lập trình xác định các lỗi thời gian chạy riêng của chúng.
  • CRD-2.I.4 Một lỗi tràn là một lỗi xảy ra khi máy tính cố gắng xử lý một số nằm ngoài phạm vi giá trị đã được xác định.
  • CRD-2.I.5 Các phương pháp hiệu quả sau đây để tìm và sửa lỗi:
    • các trường hợp kiểm thử
    • truy vết tay
    • trực quan hóa
    • trình gỡ lỗi
    • thêm câu lệnh xuất dữ liệu phụ

Mục tiêu học tập CRD-2.J: Xác định các đầu vào và các kết quả hoặc hành vi mong đợi tương ứng có thể được sử dụng để kiểm tra tính đúng đắn của một thuật toán hoặc chương trình. [Kỹ năng 4.C]

  • CRD-2.J.1 Trong quá trình phát triển, kiểm thử sử dụng các đầu vào đã xác định để đảm bảo rằng thuật toán hoặc chương trình đang tạo ra các kết quả mong đợi. Các lập trình viên sử dụng kết quả từ việc kiểm thử để sửa đổi thuật toán hoặc chương trình của họ.
  • CRD-2.J.2 Các đầu vào đã xác định dùng để kiểm thử chương trình nên minh họa các kết quả mong đợi khác nhau nằm ở mức hoặc ngay bên ngoài cùng cực (tối thiểu và tối đa) của dữ liệu đầu vào.
  • CRD-2.J.3 Các yêu cầu về chương trình là cần thiết để xác định các đầu vào đã xác định phù hợp cho việc kiểm thử.

Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

English

A bug is an error in a program; debugging 调试 is finding and fixing it. Three kinds:

  • a syntax error 语法错误 breaks the language's rules, so the program will not run;
  • a runtime error 运行时错误 crashes the program while it runs (e.g. dividing by zero);
  • a logic error 逻辑错误 lets it run but gives the wrong result.

Find bugs by testing with different inputs, adding print statements to see values, and hand-tracing the code. Choose the test inputs deliberately: they should demonstrate the different expected outcomes at or just beyond the extremes — the minimum and maximum values the program should accept, and a value just outside each of them. A program that works on ordinary data very often fails on an empty list, a zero, or a value one past the end of a range, so those are the inputs worth trying first. Fixing one bug at a time and re-testing is the reliable method.

Exam skill: be able to name the type of an error and describe a testing strategy that would catch it – a recurring multiple-choice and Create-task theme.

Worked example. A program meant to print the average of two numbers instead runs avg = a + b / 2. Tracing the order of operations, / runs before +, so it computes $a+\tfrac{b}{2}$ rather than the average. Add parentheses to fix it: avg = (a + b) / 2. Testing with $a=4,\ b=6$ confirms the fix — the buggy line gives $4+3=7$, the corrected line gives $\tfrac{10}{2}=5$. Testing with known inputs is exactly how you find and confirm a logic error.

Tiếng Việt

Một lỗi (bug) là một sai sót trong chương trình; gỡ lỗi (debugging) là tìm và sửa nó. Ba loại:

Bảng truy vết ghi lại giá trị của từng biến khi chương trình chạy, để tìm lỗi
Bảng truy vết ghi lại giá trị của từng biến khi chương trình chạy, để tìm lỗi
  • lỗi cú pháp vi phạm quy tắc của ngôn ngữ, khiến chương trình không thể chạy;
  • lỗi thời gian chạy làm chương trình bị sập khi nó đang chạy (ví dụ: chia cho không);
  • lỗi logic cho phép nó chạy nhưng đưa ra kết quả sai.

Tìm lỗi bằng cách thử nghiệm với các đầu vào khác nhau, thêm câu lệnh in để xem giá trị, và truy vết bằng tay. Chọn các đầu vào thử nghiệm một cách chủ đích: chúng nên minh họa cho các kết quả mong đợi khác nhau tại hoặc ngay bên ngoài mức cực hạn – giá trị tối thiểu và tối đa mà chương trình nên chấp nhận, và một giá trị nằm ngay bên ngoài mỗi giá trị đó. Một chương trình hoạt động tốt với dữ liệu thông thường thường thất bại với một danh sách trống, số không, hoặc một giá trị vượt quá cuối phạm vi, vì vậy những đầu vào này đáng để thử đầu tiên. Sửa một lỗi một và thử nghiệm lại là phương pháp đáng tin cậy.

Kỹ năng thi: hãy biết tên gọi của loại lỗi và mô tả chiến lược thử nghiệm sẽ bắt được nó – một chủ đề thường xuyên xuất hiện trong trắc nghiệm và nhiệm vụ Tạo (Create).

Ba loại lỗi lập trình: cú pháp, logic, và thời gian chạy
Ba loại lỗi lập trình: cú pháp, logic, và thời gian chạy

Ví dụ minh họa. Một chương trình intended để in trung bình cộng của hai số lại chạy ra avg = a + b / 2. Theo dõi thứ tự thực thi, / chạy trước +, nên nó tính $a+\tfrac{b}{2}$ thay vì trung bình cộng. Thêm dấu ngoặc để sửa lỗi: avg = (a + b) / 2. Thử nghiệm với $a=4,\ b=6$ xác nhận sự sửa đổi — dòng bị lỗi cho kết quả $4+3=7$, dòng đã sửa cho kết quả $\tfrac{10}{2}=5$. Thử nghiệm với các đầu vào đã biết chính là cách bạn tìm và xác định một lỗi logic.

Explore · ⁨Khám phá⁩

Trace the guessing-game logic and spot a logic error · ⁨Vẽ đường truy vết logic trò chơi đoán số và chỉ ra một lỗi logic⁩

Drag the guess and watch which branch runs. A logic error would send the same guess down the wrong branch — the program still runs, but gives the wrong message. The secret number here is 50. · ⁨Kéo và thả giá trị dự đoán để xem nhánh nào được thực thi. Một lỗi logic sẽ đưa cùng một giá trị dự đoán vào nh nhánh sai — chương trình vẫn chạy, nhưng trả về thông báo sai. Số bí mật ở đây là 50.⁩

Vocabulary · ⁨Từ vựng⁩ Train · ⁨Luyện tập⁩
English Tiếng Việt
collaborative/kəˈlæbrətɪv/ hợp tác
Pair programming/peə ˈprəʊɡræmɪŋ/ lập trình cặp đôi
input/ˈɪnpʊt/ đầu vào
output/ˈaʊtpʊt/ đầu ra
iterative/ˈɪtərətɪv/ lặp lại
decomposition/ˌdiːkɒmpəˈzɪʃn/ decomposition
Comments/ˈkɒments/ Bình luận
surveys/ˈsɜːveɪz/ khảo sát
diagrams representing the layout of the user interface sơ đồ biểu diễn bố cục giao diện người dùng
event/ɪˈvent/ sự kiện
event handler/ɪˈvent ˈhændlə/ xử lý sự kiện
debugging/ˈdiːbʌɡɪŋ/ kiểm tra lỗi
syntax error/ˈsɪntæks ˈerə/ lỗi cú pháp
runtime error/ˈrʌntaɪm ˈerə/ lỗi thời gian chạy
logic error/ˈlɒdʒɪk ˈerə/ lỗi logic
1.4

Exam tips · ⁨Mẹo làm bài thi⁩

English
  • Much of CSP is assessed through the Create and written performance tasks — explain your reasoning clearly, not just your result.
  • Know the benefits of collaboration and how diverse perspectives reduce bias in a program.
  • Use precise vocabulary (iterative development, program requirements) when you describe a design process.
  • Give and take feedback constructively; credit collaborators and sources.
  • Break a large problem into smaller modules that a team can build in parallel.
Tiếng Việt
  • Phần lớn CSP được đánh giá thông qua các nhiệm vụ Tạo (Create) và bài thi viết – hãy giải thích lý do của bạn một cách rõ ràng, không chỉ đưa ra kết quả.
  • Hiểu lợi ích của hợp tác và làm thế nào các góc nhìn đa dạng giúp giảm thiểu thiên kiến trong một chương trình.
  • Sử dụng từ vựng chính xác (phát triển lặp lại, yêu cầu chương trình) khi bạn mô tả một quy trình thiết kế.
  • Đưa ra và tiếp nhận phản hồi mang tính xây dựng; ghi công các đồng tác giả và nguồn gốc.
  • Chia một vấn đề lớn thành các module nhỏ hơn mà một nhóm có thể xây dựng song song.

Interactive lessons on this topic · ⁨Bài học tương tác về chủ đề này⁩

Work through it step by step, with instant-check exercises. · ⁨Làm theo từng bước, kèm theo bài tập kiểm tra ngay lập tức.⁩

Past Papers · ⁨Đề thi cũ⁩

More topics in AP Computer Science Principles · ⁨AP Nguyên lý khoa học máy tính⁩ · ⁨Nhiều chủ đề hơn trong AP Computer Science Principles · ⁨AP Nguyên lý khoa học máy tính⁩⁩

Log in or create account · ⁨Đăng nhập hoặc tạo tài khoản⁩

IGCSE, A-Level & AP