# Problem Solving > Steps to start solving problems :question: ### Step 1: Problem Definition 1. Information that is given * What input to take in from the user (Input) * What data should be display (Output) :::info **Outline:** Write a program to take in the ... and produce ... ::: :::info :bulb: **Example 1:** Write a program to take in the plaintext/ciphertext of the message and the secret key and produce the ciphertext/plaintext based on Caser/shift cipher methodology. ::: :::info :bulb: **Example 2:** Write a C program to take in the input parameters of the mean and standard deviation of a gaussian distributed variable that range from -20 to 20 in the increment of 0.5. Print out a table of the probability density function with respect to the input. ::: ### Step 2: Problem Analysis 1. Develop the mathematical formulation related to the input and output (Brains of the program) :::info :bulb: **Example 1:** Put input into formula and output result ![](https://i.imgur.com/sH6QZDB.png) ::: :::info :bulb: **Example 2:** ![](https://i.imgur.com/cnXrEkb.png) ::: ### Step 3: Algorithm Design :::info :bulb: **Example 1: Algorithm** ![](https://i.imgur.com/8hj54KQ.png) ::: :::info :bulb: **Example 1: Persoducode** ![](https://i.imgur.com/JAKxSSH.png) ::: ## Persoducode #### Keywords BEGIN END READ PRINT IF ELSE ELSEIF ENDIF WHILE DO ENDWHILE ENDDO FUNCTION "function name"() ENDFUNCTION FOR K = 0 to n do ENDFOR ## Format Specifiers | Syntax | Description | | ----------- | ----------- | | %d | Signed integer - 4 bytes | | %u | Unsigned integer - 4 bytes | | %c | Character - 1 byte | | %f | Float - 4 bytes | | %s | String | | %lf | Double - 8 bytes | | %Lf | Long Double - 16 bytes | | %p | Hexadecimal | ## Variables and Constant :::info ![](https://i.imgur.com/T49HwjN.png) * Varibles without values will go to bss segment * Varibles with values goes to data segment :::