Writing clear concise algorithms is difficult and will take practice.
Below are a few mistakes commonly seen on student papers.
Write what the computer will do, NOT what you will do...
create & initialise variables
write a for loop
write an if statement to check whether x is positive
Such statements are wrong since they describe what you the programmer does when writing the program, rather than what the computer does when executing it! Use "set count to 0 and x to 15, for each exam paper add one to count, if x is positive then ..."
Note also that "create variables" (actually "declare variables") is not part of any algorithm. Initialising variables (giving them values) is certainly necessary, but you need to specify what variables should have what values. Be precise.
Use the present tense...
getting the value of radius,
saving the document
printing the result
Statements like these are all wrong. Use "get the radius from the user" (or simply "get radius"), "save", "print", etc. Also, don't forget to prompt the user for input--your program should be user-friendly.
Each step in the design must be complete in itself
1. read variables
2. print out x times y all squared
Is unacceptable! Would a sub-contractor be able to do each step correctly without requiring additional information (of the problem or other steps)? In this case, they would undoubtedly ask of step 1, what variables? Be precise. Presumably you need x and y for step two, so it should be "read x & y" Another common one is "set variables" to which the response is "What variables? To what values?"
Even if the details are in the sub-designs...
1. read variables
2. print out x times y all squared
Solve 1.
1.1 read x
1.2 read y
This is the same as the previous example mistake, but students will often respond to the question "what variables?" by saying "... I have shown them in the details of the step 1 design." True, they are there, but as you should have learnt with Robo designs, you should not proceed to solve the pieces until you are 100% sure that the top-level design is correct. If you do, you risk wasting time and effort building something that cannot be used in the final product.
Do details later...
1. ..
1.1 .
1.2
1.3
2 ..
2.1
Is unacceptable since you are clearly solving the details of step 1 without knowing if it appropriate. Again, check the complete top-level design first before going on to solve sub-steps.
Data requirements...
Data requirements (the constants and variables that will be used) are extracted from knowledge of information flowing between steps in the algorithm. They cannot be deduced before the algorithm is written and certainly do not appear magically out of thin air!
Do not include variable definitions as part of the algorithm
Be consistent in naming...
1. read name of user
2. print users name
Whilst it is understandable, it may cause difficulties later on if you use "name" or "nameOfUser" in step one and then "usersName" or "username" in step two.