pseudocode
pseudocode
• Iteration/loops
FOR …TO… NEXT WHILE…DO…ENDWHILE REPEAT…UNTIL…
Count-controlled loop Pre-condition loop Post-condition loop
When I know previously how many to May not run at all When I want the loop to run at
loop least once
Condition is to continue the loop Condition is to break the loop
FOR Counter 1 TO 10 Counter 0 Counter 0
OUTPUT "Hi" WHILE Counter<>10 DO REPEAT
NEXT Counter OUTPUT "Hi" OUTPUT "Hi"
Counter Counter+1 CounterCounter+1
ENDWHILE UNTIL Counter=10
FOR Counter 7 TO 12 STEP 2 Counter 7 Counter 7
OUTPUT Counter WHILE Counter<12 DO REPEAT
NEXT Counter OUTPUT Counter OUTPUT Counter
Counter Counter+2 Counter
ENDWHILE Counter+2
UNTIL Counter>12
• 1D array
Declaration:
DECLARE StudentNames : ARRAY[1:30] OF STRING
DECLARE StudentNames : ARRAY[0:29] OF STRING
Iteration:
FOR Index ← 1 TO 30
StudentNames[Index] ← ""
NEXT Index
• 2D array
Declaration:
DECLARE MyTable : ARRAY[0:9,0:2] OF INTEGER
//9 rows, 3 elements each
Iteration:
FOR I <- 1 TO 9
OUTPUT "A new row"
FOR J <- 1 TO 3
INPUT MyTable[I, J]
NEXT J
NEXT I
• Standard methods of solution:
1- Counting
//Counting even numbers in an array
EvenCounter 0
FOR Counter 1 TO 10
IF Numbers[Counter] MOD 2 = 0
THEN
EvenCounter EvenCounter + 1
ENDIF
NEXT Counter
2- Totalling
//1D Array
Total 0
FOR Counter 1 TO 10
Total Total + Numbers[Counter]
NEXT Counter
OUTPUT Total
//2D Array
Total 0
FOR Row 1 TO MaxRow
RowTotal 0
FOR Column 1 TO 10
RowTotal RowTotal + Amount[Row, Column]
NEXT Column
OUTPUT "Total for Row ", Row, " is ", RowTotal
Total Total + RowTotal
NEXT Row
OUTPUT "The grand total is ", Total
3- Average
Total 0
FOR Count 1 TO 10
Total Total + Numbers[Count]
NEXT Count
Average Total/10
OUTPUT Average
4- Minimum
Minimum 1000
FOR Counter 1 TO 10
IF Numbers[Counter] < Minimum
THEN
Minimum Numbers[Counter]
ENDIF
NEXT Counter
5- Maximum
Maximum -1
FOR Counter 1 TO 10
IF Numbers[Counter] > Maximum
THEN
Maximum Numbers[Counter]
ENDIF
NEXT Counter
6- Linear Search
INPUT Num
Counter 0
Found FALSE
REPEAT
Counter Counter +1
IF Numbers[Counter] = Num
THEN
Found TRUE
ENDIF
UNTIL Counter=10 OR Found
IF Found
THEN
OUTPUT "Index", Counter, "Element = ", Numbers[Counter]
ELSE
OUTPUT "Not Found"
ENDIF
7- Bubble Sort
a. Ascendingly
DECLARE Swapped: BOOLEAN
DECLARE Temp: INTEGER
DECLARE I, J: INTEGER
I 1
REPEAT
Swapped FALSE
FOR J 1 TO Length-I
IF Numbers[J] > Numbers[J+1]
THEN
Temp Numbers[J]
Numbers[J] Numbers[J+1]
Numbers[J+1] Temp
Swapped TRUE
ENDIF
NEXT J
I I+1
UNTIL NOT Swapped
b. Descendingly
DECLARE Swapped: BOOLEAN
DECLARE Temp: INTEGER
DECLARE I, J: INTEGER
I 1
REPEAT
Swapped FALSE
FOR J 1 TO Length-I
IF Numbers[J] < Numbers[J+1]
THEN
Temp Numbers[J]
Numbers[J] Numbers[J+1]
Numbers[J+1] Temp
Swapped TRUE
ENDIF
NEXT J
I I+1
UNTIL NOT Swapped
• Subroutines
a. Procedures
//Definition
PROCEDURE DisplayStar
OUTPUT "**********"
ENDPROCEDURE
//Call
CALL DisplayStar
b. Functions
//Definition
FUNCTION SumSquare(Num1: INTEGER, Num2: INTEGER) RETRUNS
INTEGER
RETURN Num1^2 + Num2^2
ENDFUNCTION
//Call
MyVariable SumSquare(2, 3)
c. Library routines
DIV( , )
MOD( , )
ROUND(<identifier>, <places>)
RANDOM()
LENGTH(Str)
LCASE(Str)
UCASE(Str)
SUBSTRING(Str, Start, Length)
• Files:
>> write:
OPENFILE FileA.txt FOR WRITE
WRITEFILE FileA.txt, MyString
CLOSEFILE FileA.txt
>>read
OPENFILE FileA.txt FOR READ
READFILE FileA.txt, MyString
CLOSEFILE FileA.txt
• Validation:
REPEAT
INPUT Number
IF incorrect
THEN
OUTPUT "re-enter"
ENDIF
UNTIL correct