Skip to content
Parallax Learn

Parallax Learn

  • Welcome
  • Tutorials
        • Tutorial Series head tag

          Tutorial Series
        • Tutorial Series

          The special, classroom-ready series pages are organized collections of tutorials for our most popular hardware and/or languages. The tutorials for each topic are conveniently accessible from a single page, shown in the order it is recommended that they be completed.
        • Robotics Series Head tag

          Robotics Series
        • Robotics Series

          • Artificial Intelligence
          • Cybersecurity: Radio Data tutorialCybersecurity
          • cyber:bot + Python
          • cyber:bot + MakeCode
          • Boe-Bot Tutorial SeriesBoe-Bot
          • Arduino Shield-Bot
          • ActivityBot with C TutorialsActivityBot + C
          • ActivityBot with BlocklyProp Tutorial SeriesActivityBot + BlocklyProp
          • Scribbler 3 Tutorial SeriesScribbler 3
        • Electronics & Programming Series Head tag

          Electronics & Programming Series
          • BS2 Board of Education Tutorial SeriesBS2 Board of Education
          • Propeller C-Language BasicsPropeller C Basics
          • FLiP Try-It Kit C Tutorial SeriesFLiP Try-It Kit + C
          • FLiP Try-It Kit BlocklyProp TutorialsFLiP Try-It Kit + BlocklyProp
          • Badge WX Tutorial SeriesBadge WX
          • Propeller BlocklyProp Basics and ProjectsPropeller BlocklyProp Basics
          • View All Tutorial Series »
        • Browse Tutorials
        • Browse Tutorials

          Individual tutorials sorted by robot or kit, and language.
        • By Robot or Kit
          • ActivityBot
          • SumoBot WX
          • Boe-Bot
          • Shield-Bot
          • cyber:bot
          • Badge WX
          • ELEV-8
          • ARLO
        • By Language
        • By Language

          • Propeller C
          • Arduino
          • BlocklyProp
          • PBASIC
          • Python
          • MakeCode
          • View All Tutorials »
  • Educators
  • Reference
  • Downloads
  • Home
  • All Courses
  • Propeller C – Functions

Propeller C – Functions

Function with Parameters and Return

Some functions are designed to do a job and send a return value back to the function call.  For example, a function might check a pushbutton and return its state.  Or, a function might receive some values through its parameters, use them in a calculation, and return the answer — we will try this.

We will also try a neat coding technique: setting a variable as equal to a function call.  This is a quick and efficient way to call a function and get its return value into a variable.

  • Open the project Function with Parameters and Return Value.side.
  • Read the code.  What do you think it will do?
  • Click the Run with Terminal button, and compare the result from the Propeller with your prediction.
/*
  Function with Parameters and Return Value.c
 
  Pass parameters to a function, let it do its job, and display the result
  it returns.
*/

#include "simpletools.h"                      // Include simpletools

int adder(int a, int b);                      // Function prototype

int main()                                    // main function
{
  int n = adder(25, 17);                      // Call adder function
  print("adder's result is = %d", n);         // Display adder function result
}

int adder(int a, int b)                       // adder function
{
  int c = a + b;                              // Add two values
  return c;                                   // Return the result
}

 

How it Works

The adder function’s definition is int adder(int a, int b).  The (int a, int b) part means that a function call to adder must pass two int values.  The int at the beginning means adder will send back, or return, an int value to the function call.

Take a close look at the line inside main that sets int n equal to an adder function call.  adder(25, 17) passes those two values to the adder function’s a and b parameters. There, a + b adds the values together, and the result is assigned to a local variable with int c =.  At that point, c = 42. 

return c sends the value of c back to take the place of the original function call in main. So,  int n = adder(25, 17) evaluates to n = 42.

The next line in main, a print statement, displays the value of n.  Your SimpleIDE Terminal will display “adder’s result is 42”

 
 


Did You Know?

Local Options — The function’s parameter list is not your only chance to declare local variables.  For example, int n = adder… and also (int a, int b) in the adder function are local variables. 

Type Less — The adder function could have been even shorter.  You could replace the two lines in its code block with return a + b; no need for int c at all.

Return value from main? — Notice all of our programs begin with int main(), by C convention. In computer system programming, a main routine might return a 0 tell a higher-level program that it executed.  Since we are programming a stand-alone microcontroller we don’t need to have main return anything.  In fact, void main() and just main() will also work, though the C compiler might give you a warning message in the Status window.


 

Try This

Here are some variations on the main function that use the result adder returns in different ways. 

  • Use the Save Project As button to make a copy of your project and save it into the My Projects folder.
  • Modify the code as shown below, and try to predict the results.
  • Use the Run with Terminal button to display the output. Are the actual results the same as what you predicted?

 

Your Turn

Try including a subtracter function. 

  • Use the Save Project As button to make a copy of your project named Adder Subtracter Functions.
  • Add a forward declaration for subtracter above main.
  • Add the subtracter function (which subtracts a from b) below the adder function.
  • Call the subtracter function from within main.

Printer-friendly version
Function with Parameter
Prev
Memory Functions Can Share
Next

DISCUSSION FORUMS | PARALLAX INC. STORE

About | Terms of Use | Feedback: learn@parallax.com | Copyright©Parallax Inc. 2024

© 2025 Parallax Learn • Built with GeneratePress