PrepGo

Developing Procedures - AP Computer Science Principles Study Guide

Written by AP Content Team, Verified for 2026 AP Exams, Last updated: May 2026

Learn with study guides reviewed by top AP teachers. This guide takes about 14 minutes to read.

Getting Started

Imagine trying to write a single, massive recipe that details every single step for preparing a complex, multi-course meal from scratch. The instructions would be long, repetitive, and incredibly difficult to follow or modify. In programming, we use named, reusable sets of instructions called procedures to manage this complexity, breaking down large problems into smaller, more manageable tasks.

What You Should Be Able to Do

  • Explain how procedures act as a form of abstraction to manage program complexity.

  • Write a procedure that accepts data using parameters to generalize its behavior.

  • Trace the flow of program execution when a procedure is called and returns.

  • Describe how breaking a program into modular procedures aids in collaboration and debugging.

Key Concepts & Application

The Core Idea

A Procedure is a named group of programming instructions that performs a specific, well-defined task. Think of it as a "mini-program" within your main program. Instead of rewriting the same lines of code every time you need to perform a common action, you can write them once inside a procedure and then simply "call" that procedure by its name whenever you need it.

This is a powerful form of Abstraction, the process of hiding complex implementation details and showing only the essential features. When you use a procedure, you don't need to know how it works internally; you only need to know what it does, what inputs it needs, and what output it produces. This allows you to build large, sophisticated programs from smaller, understandable, and independent components—a concept known as modularity.

Logic & Application

Procedures are defined with a name and can optionally accept inputs called parameters. They are executed only when they are called from another part of the program.

Example 1: A Simple Procedure

Some procedures perform a fixed task and don't need any input. For example, a procedure to display a welcome message.


// Procedure Definition

PROCEDURE displayWelcome ()

{

  DISPLAY("--------------------")

  DISPLAY("Welcome to the App!")

  DISPLAY("--------------------")

}


// Main Program Logic

DISPLAY("Program starting...")

displayWelcome() // This is the procedure call

DISPLAY("Program has ended.")
  • Explanation: The PROCEDURE displayWelcome() block defines the steps for displaying the message. The code inside the {} does not run until the line displayWelcome() is reached in the main program logic. This is the procedure call.

Example 2: A Procedure with Parameters

To make procedures more flexible, we use parameters, which are input variables for the procedure. When we call the procedure, we provide actual values, called arguments, for those parameters. This allows one procedure to work with different data.


// Procedure Definition with parameters

// 'length' and 'width' are parameters

PROCEDURE calculateArea (length, width)

{

  area <- length * width

  RETURN(area) // Sends the calculated value back

}


// Main Program Logic

roomWidth <- 10

roomLength <- 15


// Calling the procedure with arguments

// 15 and 10 are arguments passed to the procedure

totalArea <- calculateArea(roomLength, roomWidth)


DISPLAY("The total area is: ")

DISPLAY(totalArea)
  • Explanation:

    • PROCEDURE calculateArea (length, width) defines a procedure that requires two inputs. length and width are placeholders.

    • RETURN(area) sends the final calculated value back to the part of the program that called it.

    • calculateArea(roomLength, roomWidth) is the procedure call. The value of roomLength (15) is passed to the length parameter, and the value of roomWidth (10) is passed to the width parameter.

    • The returned value (150) is then stored in the totalArea variable.

Tracing & Analysis

Tracing a program with procedures involves tracking how the program's flow of execution "jumps" to the procedure's code and then comes back.

Logic Trace for calculateArea Example:

Line of CodeActionroomWidthroomLengthtotalAreaInside calculateArea
1roomWidth is assigned 1010undefinedundefined-
2roomLength is assigned 151015undefined-
3Call calculateArea(15, 10)1015undefinedlength=15, width=10
4(Inside procedure) area <- 15 * 101015undefinedarea=150
5(Inside procedure) RETURN(150)1015undefinedReturns 150
6Returned value is assigned to totalArea1015150-
7Display "The total area is: "1015150-
8Display the value of totalArea (150)1015150-

This trace shows that the program pauses at the procedure call, executes the code within the procedure using the provided arguments, and then resumes where it left off, using the returned value.

Key Terminology & Logic

Term / SyntaxDescription
PROCEDURE name (param1, ...)Defines a named block of code. param1 is an optional parameter.
Procedure CallInvoking a procedure by its name to execute its code (e.g., calculateArea(10, 15)).
ParameterA variable in the procedure definition that acts as a placeholder for an input value.
ArgumentThe actual value passed to a procedure's parameter when it is called.
RETURN (value)A command that exits the procedure and sends a value back to the calling code.

Core Concepts & Terminology

  • Procedure: A named group of instructions that can be called to perform a specific task. Procedures help break programs into smaller, more manageable parts.

  • Abstraction: The process of hiding complex details to focus on essential characteristics. Procedures are a form of abstraction because they let you use code without needing to know its internal logic.

  • Modularity: The design principle of separating a program into independent, interchangeable components (modules). Procedures are the primary way to create these modules.

  • Parameter: A variable in a procedure's definition that accepts an input value. It's the "parking spot" for data.

  • Argument: The actual data value passed into a parameter when a procedure is called. It's the "car" that parks in the spot.

  • Core Logic: Defining a Procedure:

    
    PROCEDURE doSomething (parameter1, parameter2)
    
    {
    
      // Instructions to be executed
    
      result <- parameter1 + parameter2
    
      RETURN(result)
    
    }
    

    This creates a reusable block of code named doSomething that takes two inputs and returns their sum.

  • Core Logic: Calling a Procedure:

    
    // Calling the procedure with arguments 5 and 10
    
    finalValue <- doSomething(5, 10)
    

    This executes the doSomething procedure, passing 5 and 10 as arguments, and stores the returned value in finalValue.

Core Skill Check

  • Logic Tracing: What is the final value of score after this pseudocode runs?

    
    PROCEDURE adjust(val) { RETURN(val * 2) }
    
    score <- 10
    
    score <- adjust(score)
    
  • Debugging: Identify the error in this procedure call.

    
    PROCEDURE greet(firstName, lastName) { DISPLAY("Hello!") }
    
    greet("Ada")
    
  • Application: Describe the task of "making a sandwich" as a main program that calls at least two different procedures (e.g., getIngredients, assembleSandwich).

Common Misconceptions & Clarifications

  • "Parameters and arguments are the same thing."

    • Clarification: A parameter is the variable placeholder in the procedure's definition (e.g., width). An argument is the actual value supplied when the procedure is called (e.g., 10).
  • "Procedures just make code longer and more complicated."

    • Clarification: While they add a few lines for definition, procedures drastically reduce repetition, improve readability, and make code much easier to debug and update. A single change inside a procedure updates its behavior everywhere it is called.
  • "A procedure can only be called once."

    • Clarification: The primary benefit of a procedure is reusability. It can be defined once and called hundreds or thousands of times from different parts of a program.
  • "All procedures must have parameters and a RETURN statement."

    • Clarification: Procedures can be defined with no parameters if they perform a static task (like displayWelcome), and they do not need to return a value if their purpose is to perform an action (like printing to the screen) rather than calculating a result.

Summary

Procedures are a fundamental building block in programming used to manage complexity and create readable, maintainable code. They act as a form of abstraction, allowing programmers to use a block of code by its name without needing to know its internal details. By using parameters, procedures can be made flexible and reusable, accepting different data to perform their task. Breaking a large problem down into a set of modular procedures is a critical skill for developing sophisticated software and collaborating effectively with other programmers.