Fundamentals of Programming 1 of n
Published: 2021-04-19 00:10:15

This series is for absolute beginners. No assumption is made that you have any programming knowledge. I only ask you to be open to using  [Repl.it](https://repl.it/) a simple online IDE (integrated Development Environment). I ask you to not be intimidated. Hopefully you can enjoy the ride. 

Programming or coding is a means to an end. You don't write a computer program without a purpose. Most programming 101-level books jump into listing various things in programming and if you are not immersed in the world already, you feel lost. It's not you. It's them and how the information in presented. 

Let's start with the problem statement. 

You sells apples and want to figure out the profit (or loss) you are making. And you want to write a computer program to help you determine the profit/loss. 

The first step is to understand the problem and come up with a solution. In programming parlance, the solution is often referred to as an algorithm. So what's our algorithm? From basic math/business class, profit is how much money you are left with after you sell something. If you sold the apple for more than what you bought it for, you make a profit. If you sell for less, you take a loss. 

The algorithm boils down to this. 

1. Note the purchase price
2. Note the selling price
3. profit or loss per apple sold = selling price - purchase price
4. Multiply the number from step 3 with the number of apples sold

Let's write some code. Don't be intimated. You are in command. The computer exists to serve you. 

Login to your Repl.it account. You should see a screen similar to this

![Screen Shot 2021-02-03 at 7.45.06 AM.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1612356390415/JsdYz-G1L.png)

Click on `+ New Repl` on the top left. You should see a popup like below.

![Screen Shot 2021-02-03 at 7.48.56 AM.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1612356633351/gordixgcN.png)

Select `Python` from the first drop down. Click `Create repl` And this brings you to the IDE like the one shown below

![Screen Shot 2021-02-03 at 7.50.06 AM.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1612357138092/IOSHWyfNF.png)

Do not be intimidated. You don't need to understand anything that's specific to `Python` or programming. This IDE is a means to an end and our goal is to learn concepts. 

To help you get familiar with the controls in the IDE, the most relevant ones for our discussion, let's perform the standard programming ritual of printing `Hello World!`

In the middle part of the screen where the tab title says `main.py` type in the following
`print("Hello World!")`

![Screen Shot 2021-02-03 at 8.14.55 AM.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1612358115547/xV-qifi7L.png)

Click the `Run` button and you should see `Hello World!` on the right side. 

You are a programmer!!

Again, don't worry if you don't understand anything you did at this point. This is just a ritual. And like most rituals, we just perform it just because `that's the way`! Just remember the statement `print` prints the results to the right part of the screen.

Now, let's get on with why we are here. We want to write a program that computes the profit (or loss) of selling apples. 

We buy apples at $1 each and sell them at $2 each (yeah! 100% profit!). What is the profit when we sell 2 apples? 

If this were a math assignment, you would write it out as 

`(2 - 1 ) x 2`

In programming the `*` character is used to denote multiplication. So this becomes

`(2 - 1) * 2`

Let's program!

Replace `"Hello World!"` with `(2 - 1) * 2` and click `Run`. You should see `2` printed on the right.

![Screen Shot 2021-02-03 at 8.41.12 AM.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1612359693764/38GJwrBM4.png)

Without the context if anyone looks at `2` in the right most pane, they have no idea what it represents. Let's correct that. Add a `print("Profit")` statement on line 1. Now when you run the program it will display `Profit` and `2` on two separate lines.
 
![Screen Shot 2021-02-03 at 9.23.01 AM.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1612362207930/DqQj38X40.png)
 
Much better!

Next, let's say your friend also wants in on the fun. They say what if I sell 5 apples. You say, fine. Change the `2` to `5`. When your friends looks at the program they cannot immediately figure out which `2` to change. Is it the first one or the second one? You know which one because you created the program. However, if it was a complex formula pretty soon even you won't be able to tell the various numbers apart.  

We need to make the program clearer. More Readable. Anyone should be able to look at the code and deduce what's going on. 

If you formulate the problem as a mathematical formula (remember algebra?), you express it like so
`pl = (s - p) * n` where `pl` represents `profit or loss`, `s` represents `sale price`, `p` represents `purchase price` and, `n` represents the number of apples sold. 

The formula `pl = (s - p) * n` is not clear without a legend describing what each alphabet represents. You can probably make is clear like so

`profit_or_loss = (sale_price - purchase_price) * number_of_apples_sold`

 You just learned one of the core concepts of programming. `variables`. In mathematical formula above `pl`, `s`, `p` and `n` are variables. They are names we attribute to things we want to represent in a formula. Anyone who wants to solve the formula simply replaces variables with values they want to plug in. When programming, it is a best practice to use meaningful words as variables instead of single characters like you do in mathematical formulas. 

Let's rewrite our program with variables. Type the lines as shown below. We will get to the red squiggles later.  

![Screen Shot 2021-02-03 at 8.08.36 PM.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1612400960193/6yzt0mP4U.png)

Click the `Run` button. Uh! Oh! Error!!

![Screen Shot 2021-02-03 at 8.11.44 PM.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1612401136768/efH6GseFB.png)

What's going on? We are using `Python` as the programming language and `Python` doesn't understand that you want to create variables. Each programming language has it's own rules on how to create variables. In `Python` you make your intent known by giving the variable a value. The act of giving a variable a value is called an `assignment`. You are assigning a value to a variable. 

Variables can "hold" different types of information. Since we are dealing with numbers we assign numeric values to our variables. Add the assignment like so

![Screen Shot 2021-02-03 at 8.18.04 PM.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1612401737163/vfUUi25hl.png)

Click `Run`. Bingo! Now we are back in business. Assign different values to the variables and check out the result. You can even assign values like `1.25` or `2.75`. Can variables hold non-numbers? Of course they can. These types of values are called strings and are usually enclosed with `''` or `""`. Remember the ritual? We had `print("Hello World!")`. "Hello World!" is a string. Make the change like shown below to add a string variable to your program. 

![Screen Shot 2021-02-03 at 8.33.06 PM.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1612402419155/fwFJAQyeJ.png)

In the next post we will work on expanding the program and learn other core concepts of programming. Stay tuned!