Answer:
A jacket that originally costs $ 100 is on sale today for $ 80
Explanation:
Main
: From here the execution of the program begins
Set OldPrice = 100 -> This line assigns 100 to the OldPrice variable
Set SalePrice = 70 -> This line assigns 70to the SalePrice variable
Call BigSale(OldPrice, SalePrice) -> This line calls BigSale method by passing OldPrice and SalePrice to that method
Write "A jacket that originally costs $ ", OldPrice -> This line prints/displays the line: "A jacket that originally costs $ " with the resultant value in OldPrice variable that is 100
Write "is on sale today for $ ", SalePrice -> This line prints/displays the line: "is on sale today for $ " with the resultant value in SalePrice variable that is 80
End Program -> the main program ends
Subprogram BigSale(Cost, Sale As Ref) -> this is a definition of BigSale method which has two parameters i.e. Cost and Sale. Note that the Sale is declared as reference type
Set Sale = Cost * .80 -> This line multiplies the value of Cost with 0.80 and assigns the result to Sale variable
Set Cost = Cost + 20 -> This line adds 20 to the value of Cost and assigns the result to Cost variable
End Subprogram -> the method ends
This is the example of call by reference. So when the method BigSale is called in Main by reference by passing argument SalePrice to it, then this call copies the reference of SalePrice argument into formal parameter Sale. Inside BigSale method the reference &Sale is used to access actual argument i.e. SalePrice which is used in BigSale(OldPrice, SalePrice) call. So any changes made to value of Sale will affect the value of SalePrice
So when the method BigSale is called two arguments are passed to it OldPrice argument and SalePrice is passed by reference.
The value of OldPrice is 100 and SalePrice is 70
Now when method BigSale is called, the reference &Sale is used to access actual argument SalePrice = 70
In the body of this method there are two statements:
Sale = Cost * .80;
Cost = Cost + 20;
So when these statement execute:
Sale = 100 * 0.80 = 80
Cost = 100 + 20 = 120
Any changes made to value of Sale will affect the value of SalePrice as it is passed by reference. So when the Write "A jacket that originally costs $ " + OldPrice Write "is on sale today for $ " + SalePrice statement executes, the value of OldPrice remains 100 same as it does not affect this passed argument, but SalePrice was passed by reference so the changes made to &Sale by statement in method BigSale i.e. Sale = Cost * .80; has changed the value of SalePrice from 70 to 80 because Sale = 100 * 0.80 = 80. So the output produced is:
A jacket that originally costs $ 100 is on sale today for $ 80