You are on page 1of 17

output "Welcome"

loop for COUNT from 1 to 5


output COUNT
end loop

// === EZ Pcode =================================


//
// This tool is intended to help teachers prepare
// Pseudocode that is consistent with the new
// IB Computer Science standards for the 2014 syllabus.
// This tool is a "quick and dirty hack" that
// translates Pcode into equivalent JavaScript.
// This is done with simple search and replace commands,
// so it is not very sophisticated and it's relatively
// easy to write code that won't run properly.
// One warning - the keyword NOT should never be used
// as part of a variable name, e.g. NOTHING would be
// a bad variable name, as it will translate to !HING.
// Suggestions for improvement are welcome -
// send an eMail to the author at Dave_Mulkey@fis.edu
// === Mice ============
// JavaScript has loops, including for loops
// like Java and Basic and other languages.
// This example uses loops for a poem.

loop for A from 1 to 2


output "Three blind mice"
end loop

loop for B from 3 to 4


output "See how they run"
end loop

output "They all ran up to the farmer's wife"


output "She cut off their tails with a carving knife"
output "Did you ever see such a sight in your life, as"

C = 5
loop while C < 20
output "Three blind mice"
C = C*2
end loop
// === Money =================
//
// This program converts money from EUROS into
// several other currencies. Then it uses IF commands
// to make some decisions.

EUROS = 50.00

POUNDS = 0.8*EUROS

DOLLARS = EUROS / 0.75

YEN = EUROS * 90

output EUROS + " EUR"

output YEN + " Yen"

if YEN > 1000 then


output "That is a lot of Yen"
end if

output POUNDS + " BP"

if POUNDS < 100 then


output "That is a small number of Pounds"
end if

output "$" + DOLLARS

if DOLLARS = 100 then


output "BINGO"
end if
//==== Common Factors ===============================
// This program prints all the common factors of A and B.
// This would be useful for reducing fractions.

A = 28
B = 42

output "Common factors of " + A + " and " + B

loop for C from 1 to B


if (A mod C = 0) AND (B mod C = 0) then
output C
end if
end loop
// === Table of Values for Math Function ===
// This program uses a simple loop to produce a table
// of x,y values for a math function.
// Notice that the LOOP FOR command can only count by 1,
// so the program divides by 2 to count by 0.5 each time.
// Dividing by 2 only works if you divide by 2.0,
// because C / 2 would do integer division, ignoring
// the fractional result.

output "X , Y"

loop for C from 0 to 10


X = C / 2.0
Y = 3*X*X - 7*X + 2
output X + " , " + Y
end loop
// === Translate ==============
//
// This program knows a few German words.
// If you choose an English word from the list,
// it will tell you the matching German word.
//
// It knows the following words in German:
// hello goodbye stop

input ENGLISH

if ENGLISH = "hello" then


GERMAN = "guten Tag"
else if ENGLISH = "goodbye" then
GERMAN = "auf Wiedersehen"
else if ENGLISH = "stop" then
GERMAN = "halt"
else
GERMAN = "???"
end if

output "English = " + ENGLISH


output "German = " + GERMAN
//=== Elapsed Minutes ======================
// This program inputs a STARTING time and a FINISH time.
// Then it calculates the number of elapsed minutes
// between those two times. For example:
// START_HOURS = 8
// START_MINUTES = 30
// END_HOURS = 10
// END_MINUTES = 10
// MINUTES = (10-8)*60 + (10-30) = 100

input START_HOURS
input START_MINUTES

input END_HOURS
input END_MINUTES

if START_HOURS > 23 OR START_MINUTES > 59 then


output "Start time is not valid"
else if END_HOURS > 23 OR END_MINUTES > 59 then
output "Times are not valid"
else
MINUTES = (END_HOURS - START_HOURS)*60 + (END_MINUTES-
START_MINUTES)
output "Elapsed time = " + MINUTES + " minutes"
end loop
//==== Date Validation ================================
// This code inputs a date, using numbers for months,
// and decides whether the date is VALID or not.

input MONTH
input DAY
input YEAR

output MONTH + "/" + DAY + "/" + YEAR

if YEAR mod 4 = 0 then


FEBMAX = 29
else
FEBMAX = 28
end if

M = MONTH
D = DAY

if M < 1 OR M > 12 then


output "Month is not valid"
else if D < 1 OR D > 31 then
output "Day is not valid"
else if D = 31 AND (M = 4 OR M = 6 OR M = 9 OR M = 11) then
output "That month does not have 31 days"
else if M = 2 AND D > FEBMAX then
output "February only has " + FEBMAX + " days"
else
output "Date is valid"
end if
//==== Adding Up Numbers =========================
// This program adds up a lot of numbers :
// 1 + 2 + 3 + ... + max

MAX = 10

SUM = 0

loop for COUNT from 0 to MAX


output COUNT
SUM = SUM + COUNT
end loop

output "Total = " + SUM


// ==== Arrays ===================
//
// Arrays work just like Java and C++,
// except that they can contain any data type.
// This program uses the Sieve of Eratosthenes
// to produce a list of PRIMES below 100.

NUMS = new Array()

loop for N from 1 to 100


NUMS[N] = 0
end for

loop for P from 2 to 50


N = P * 2
loop while N <= 100
NUMS[N] = 1
N = N + P
end loop
end loop

output "These are the PRIME numbers under 100"

loop for N from 2 to 100


if NUMS[N] = 0 then
output N
end if
end for
//==== Binary Search ==========
// This program uses a Binary Search algorithm to search
// for an ID number, and then prints the corresponding name.
// Notice that div does not work properly in this tool,
// so Math.floor is used to truncate the average of LOW and HIGH.

ID = [1001,1002,1050,1100,1120,1180,1200,1400]
NAME =
["Apple","Cherry","Peach","Banana","Fig","Grape","Olive","Mango"]

input TARGET

LOW = 0
HIGH = 7
FOUND = -1

loop while FOUND = -1 AND LOW <= HIGH


MID = div( LOW + HIGH , 2 ) // should be (LOW + HIGH) div 2
// but (A div B) doesn't work correctly
if ID[MID] = TARGET then
FOUND = MID
else if TARGET < ID[MID] then
HIGH = MID - 1
else
LOW = MID + 1
end if
end while

if FOUND >= 0 then


output TARGET + ":" + NAME[FOUND]
else
output TARGET + " was not found"
end if
//==== Reverse Array ===============================
// This program is supposed to reverse the order
// of the names in the array. Trace the program
// and predict what it will print after the
// loop executes.

NAMES = ["Robert","Boris","Brad","George","David"]

N = 5 // the number of elements in the array


K = 0 // this is the first index in the array

loop while K < N - 1


TEMP = NAMES[K]
NAMES[K] = NAMES[N - K - 1]
NAMES[N - K - 1] = TEMP
K = K + 1
end loop

loop for C from 0 to N-1


output NAMES[C]
end loop
//==== Frequency Distribution ====================
// This program examines the values stored in an array.
// It counts the values in each range : 0..9, 10..19, ...

DATA = [17,20,23,29,33,42,60,61,75,75,90,99]
FREQS = [0,0,0,0,0,0,0,0,0,0]

loop for C from 0 to 11


VALUE = DATA[C]
loop for F from 0 to 9
if VALUE >= 10*F AND VALUE < 10*(F+1) then
FREQS[F] = FREQS[F] + 1
end if
end loop
end for

output "Data"

loop for D from 0 to 9


output DATA[D]
end for

output "Range : Frequency"

loop for F from 0 to 9


output F*10 + " - " + (F+1)*10 + " : " + FREQS[F]
end for
//==== Appointment List ===================================
// This program maintains a list of daily appointments in
// an array. The secretary types the name of a student and then the
time,
// like this : 1215 for the time 12:15, or 850 for the time 8:50.
// After each entry, the program prints a list of all appointments.

APPS = new Array()


NAME = ""

loop for T from 0 to 2400


APPS[T] = ""
end loop

loop while NAME <> "quit"


input NAME
input TIME
if TIME >= 0 AND TIME <= 2359 then
APPS[TIME] = NAME
end if

loop for T from 0 to 2400


if APPS[T] <> "" then
output T + " : " + APPS[T]
end if
end loop
output "=================="
end loop
//==== Checking Lists for Duplicates ====================
// This program compares two lists, stored in Arrays,
// checking for duplicate names that appear in both lists.

SOCCER = ["Al","Bobby","Carla","Dave","Ellen"]
BBALL = ["Lou","Dave","Hellen","Alan","Bobbie"]

output "The following appear in both lists"

loop for S from 0 to 4


loop for B from 0 to 4
if SOCCER[S] = BBALL[B] then
output SOCCER[S]
end if
end for
end for
//==== Cities Array =========================
// This program contains an array with a list of city names.
// It counts and prints all the names that start with "D".

CITIES = ["Athens","Berlin","Dallas","Denver","London","New
York","Rome"]

COUNT = 0

loop for C from 0 to 6


if firstLetter( CITIES[C] ) = "D" then
COUNT = COUNT + 1
output CITIES[C]
end if
end loop

output "That was " + COUNT + " cities"

method firstLetter(s)
return s.substring(0,1)
end method
//==== Cities Collection =========================
// This shows how to add names of students into
// a Collection, and then search the collection and
// print all the student names that begin with "D".
// It includes a METHOD that returns
// the first letter of a String.

NAMES = new Collection()

NAMES.add("Bob")
NAMES.add("Dave")
NAMES.add("Betty")
NAMES.add("Kim")
NAMES.add("Debbie")
NAMES.add("Lucy")

NAMES.resetNext()

loop while NAMES.hasNext()


NAME = NAMES.getNext()
if firstLetter(NAME) = "D" then
output NAME
end if
end loop

method firstLetter(s)
return s.substring(0,1)
end method

You might also like