0% found this document useful (0 votes)
212 views

Pseudocode Pro Website

website fore studying

Uploaded by

arete2077
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
212 views

Pseudocode Pro Website

website fore studying

Uploaded by

arete2077
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 25

<!

DOCTYPE html>
<html lang="en">

<head>
<link rel="preload" href="/libs/toast.css" as="style"
onload="this.onload=null;this.rel='stylesheet'">
<link rel="stylesheet" href="/libs/toast.css">
<style>
.ring {
position: absolute;
top: 40%;
left: 50%;
transform: translate(-50%, -50%);
width: 150px;
height: 150px;
background: transparent;
border: 3px solid #3c3c3c;
border-radius: 50%;
text-align: center;
line-height: 150px;
font-family: sans-serif;
font-size: 20px;
color: #fff000;
letter-spacing: 4px;
text-transform: uppercase;
text-shadow: 0 0 10px #fff000;
box-shadow: 0 0 20px rgba(0, 0, 0, .5);
animation: change-hue 6s linear infinite;
}

.ring:before {
content: '';
position: absolute;
top: -3px;
left: -3px;
width: 100%;
height: 100%;
border: 3px solid transparent;
border-top: 3px solid #fff000;
border-right: 3px solid #fff000;
border-radius: 50%;
animation: animateC 2s linear infinite;
}

.ring span {
display: block;
position: absolute;
top: calc(50% - 2px);
left: 50%;
width: 50%;
height: 4px;
background: transparent;
transform-origin: left;
animation: animate 2s linear infinite;
}

.ring span:before {
content: '';
position: absolute;
width: 16px;
height: 16px;
border-radius: 50%;
background: #fff000;
top: -6px;
right: -8px;
box-shadow: 0 0 20px #fff000;
}

@keyframes animateC {
0% {
transform: rotate(0deg);
}

100% {
transform: rotate(360deg);
}
}

@keyframes animate {
0% {
transform: rotate(45deg);
}

100% {
transform: rotate(405deg);
}
}

@keyframes change-hue {
0% {
filter: hue-rotate(0deg);
}

100% {
filter: hue-rotate(360deg);
}
}
</style>

<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="keywords" content="pseudocode,programming,cambridge,alevel,a-
level,ig,igcse,9618,0478,run,execute,test,practice,computer
science,cs,exam,questions,answers,solutions" />

<meta property="og:title" content="Pseudocode Pro - Cambridge IGCSE, O-


Level & A-Level Pseudocode Executor" />

<meta name="description" content="Write & run pseudocode in your browser -


Cambridge A-Level & GCSE syntax" />
<meta property="og:description" content="Write & run pseudocode in your browser -
specifically designed for the Cambridge International A-Level (9618) and IGCSE
(0478) courses" />

<meta property="og:url" content="https://www.pseudocode.pro/" />


<meta property="og:image" content="https://www.pseudocode.pro/ogicon.png" />
<link rel="icon" type="image/png" href="/favicon.png" />
<script>
var _paq = window._paq = window._paq || [];
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//crash-analytics.pseudocode.pro/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '1']);
_paq.push(['setCustomDimension', customDimensionId = 1, customDimensionValue =
'UC']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')
[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<script src="/js/pwa-even-no-license.js"></script> <link rel="preload"
href="/libs/nice-select2.css" as="style"
onload="this.onload=null;this.rel='stylesheet'">
<link rel="stylesheet" href="/libs/nice-select2.css">
<script src="/libs/nice-select2.js"></script>
<script src="/libs/toast.js"></script>
<script src="/libs/selectPure.js"></script>
<link rel="stylesheet" href="/css/main.css">
<title>Pseudocode Pro - Cambridge IGCSE, O-Level & A-Level Pseudocode
Executor</title>
<script src="/libs/split.js"></script>
<script src="/monaco/vs/loader.js"></script>
<script>
if (window.matchMedia('(display-mode: standalone)').matches) {
alert("Couldn't find valid license on this machine - this might be
because your browser's cache was cleared. When the page loads, please login again
to use your license")
}
</script>

</head>

<body class="theme-glass home drop-zone basic">

<nav>
<input type="checkbox" id="show-menu">
<label class="ham" for="show-menu">
<div class="ham-icon"></div>
</label>
<div id="nav-contents">
<a href="/editor" target='_blank'>editor</a>
<a href="/search" target='_blank'>search</a>
<div class="dropdown">
<a>challenges</a>
<div class="dropdown-content">
<a href="/pseudocode-challenges" target='_blank'>pseudocode</a>
<a href="/sql-challenges" target='_blank'>sql</a>
</div>
</div>
<a href="/exam-questions" target='_blank'>exam q's</a>
<a class="logo" href="/">
<p>PSEUDOCODE</p>
<p>PRO</p>
</a>
<a href="/download" target='_blank'>download</a>
<a href="/buy" target='_blank'>buy ($2)</a>
<a href="/contact" target='_blank'>contact</a>

<div class="dropdown">
<a>account</a>
<div class="dropdown-content">
<a href="/my-code" target='_blank'>my code</a>
<a href="/my-favourites" target='_blank'>my favourites</a>
<a href="/my-licenses" target='_blank'>my licenses</a>
<a href="/reset-password" target='_blank'>reset password</a>
<a href="/logout" target='_blank' id="logout">logout</a>
</div>
</div>
</div>
</nav> <div id="loading" class="ploading">
<div class="ring">Loading
<span></span>
</div>
<div id="typewriter">

</div>
</div>
<main id="home-page">
<div class="split">
<div id="lsplit">
<div id="ps" cols="30" rows="10">
<div id="ops">
<input type="checkbox" name="" id="show-ops" checked
class="hide">
<label for="show-ops" id="mobile-show-run-menu">
<span class="arrow2 up"></span>
<p>Run & Options</p>
</label>
<div>
<div id="playBtn">
<svg version="1.1" id="play"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
x="0px" y="0px" height="24px"
width="24px" viewBox="0 0 100 100" enable-
background="new 0 0 100 100"
xml:space="preserve">
<path class="stroke-solid" fill="none"
d="M49.9,2.5C23.6,2.8,2.1,24.4,2.5,50.4C2.9,76.5,24.7,98,50.3,97.5c26.4-0.6,47.4-
21.8,47.2-47.7
C97.3,23.7,75.7,2.3,49.9,2.5" />
<path class="icon"
d="M38,69c-1,0.5-1.8,0-1.8-1.1V32.1c0-
1.1,0.8-1.6,1.8-1.1l34,18c1,0.5,1,1.4,0,1.9L38,69z"
style="fill: #ffbd23" />
</svg>
</div>
<div id="run-mode-wr" class="drop-up">
<select id="run-mode">
<option value="live">Live</option>
<option value="blur">Exited code
editor</option>
<option value="click" selected>Run on
click</option>
</select>
<div id="first-tooltip" class="tooltip">
<h3>Execution Mode</h3>
<p><b>Live</b>: will automatically execute upon
every character typed (warning:
could result in issues if you have
intensive or partially-completed code
that results in an infinite loop)</p>
<p><b>Exited code editor</b>: will
automatically execute code when the code editor
loses
focus - i.e. when you click outside of the
code editor</p>
<p><b>Run on click</b>: code will only be
executed when you click the triangular
run/play
button</p>
</div>
</div>
</div>
<div id="programs" class="drop-up">
<select id="program-list">
</select>
<div id="program-nav">
<span id="prev-program" class="arrow arrow-
left"></span>
<span id="next-program" class="arrow arrow-
right"></span>
</div>
</div>
<div id="op-btns">
<button id="new" class="pseudo">
<svg viewBox="0 0 24 24" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path d="M4 12H20M12 4V20" stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round" />
</svg>
</button>
<div class="tooltip blue">
<h3>Programs</h3>
<p>Choose from a number of pre-made programs or
create your own</p>
<p>Modifying a pre-made program will automatically
create a new program, ensuring the
original & modified version are available</p>
</div>
<button id="trace-btn" class="pseudo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0
0 1792 1792">
<path
d="M576 1376v-192q0-14-9-23t-23-9h-320q-14
0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384v-192q0-14-9-23t-23-9h-
320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-
23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm-512-768v-
192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-
23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0
23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23
9h320q14 0 23-9t9-23zm-512-768v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14
9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9
23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384v-192q0-14-9-23t-23-9h-320q-14 0-23
9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm128-320v1088q0 66-47 113t-113 47h-
1344q-66 0-113-47t-47-113v-1088q0-66 47-113t113-47h1344q66 0 113 47t47 113z" />
</svg> </button>
<div class="tooltip orange">
<h3>Create Trace Table</h3>
<p>Automatically create trace tables for your
code</p>
<p>Can use the BREAKPOINT keyword to add
breakpoints at specific parts of your program</p>
<p>Use TRACE_NEXT_ROW to force new row to be
created in trace table</p>
</div>
<button id="pretty-print" class="pseudo">
<svg viewBox="0 0 24 24" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path d="M9 8L5 11.6923L9 16M15 8L19 11.6923L15
16" stroke-width="2"
stroke-linecap="round" stroke-
linejoin="round" />
</svg>
</button>
<div class="tooltip pink">
<h3>Autoformat Code</h3>
<p>Toggle original/formatted code</p>
<p>Formatted code will insert new lines,
indentation and apply consistent styling rules
</p>
<p>Note: you can even try writing your entire
program on one line...and it should still
run and be formatted correctly :)</p>
</div>
<button id="load" class="pseudo">
<svg viewBox="0 0 24 24" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path
d="M11.9998 3H17.799C18.9191 3 19.4792 3
19.907 3.21799C20.2833 3.40973 20.5893 3.71569 20.781 4.09202C20.999 4.51984 20.999
5.0799 20.999 6.2V17.8C20.999 18.9201 20.999 19.4802 20.781 19.908C20.5893 20.2843
20.2833 20.5903 19.907 20.782C19.4792 21 18.9191 21 17.799 21H11.9998M11 8L15 12M15
12L11 16M15 12H3"
stroke-width="2" stroke-linecap="round"
stroke-linejoin="round" />
</svg>
</button>
<div class="tooltip orange">
<h3>Loading</h3>
<p>Load a previously-saved pseudocode file (.pseudo
default extension)</p>
</div>
<button id="save" class="pseudo">
<svg viewBox="0 0 24 24" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path
d="M8 11L12 15M12 15L16 11M12 15V3M21
12V17.7992C21 18.9193 21 19.4794 20.782 19.9072C20.5903 20.2835 20.2843 20.5895
19.908 20.7812C19.4802 20.9992 18.9201 20.9992 17.8 20.9992H6.2C5.0799 20.9992
4.51984 20.9992 4.09202 20.7812C3.71569 20.5895 3.40973 20.2835 3.21799 19.9072C3
19.4794 3 18.9193 3 17.7992V12"
stroke-width="2" stroke-linecap="round"
stroke-linejoin="round" />
</svg>
</button>
<div class="tooltip green">
<h3>Download</h3>
<p>Download a .pseudo file for future use</p>
<p>Note: programs will be saved periodically (every
10 seconds) to your browser's
storage if changes are made - this means you
can access your programs across
multiple tabs</p>
</div>
<button id="upload" class="pseudo">
<svg viewBox="0 0 24 24" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path
d="M16 7L12 3M12 3L8 7M12 3V15M21
12V17.7992C21 18.9193 21 19.4794 20.782 19.9072C20.5903 20.2835 20.2843 20.5895
19.908 20.7812C19.4802 20.9992 18.9201 20.9992 17.8 20.9992H6.2C5.0799 20.9992
4.51984 20.9992 4.09202 20.7812C3.71569 20.5895 3.40973 20.2835 3.21799 19.9072C3
19.4794 3 18.9193 3 17.7992V12"
stroke-width="2" stroke-linecap="round"
stroke-linejoin="round" />
</svg>
</button>
<div class="tooltip purple">
<h3>Upload</h3>
<p>Save your program for public-viewing by
anyone</p>
</div>
<button id="share" class="pseudo">
<svg viewBox="0 0 24 24" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path
d="M21 6a3 3 0 1 1-6 0 3 3 0 0 1 6 0ZM21
18a3 3 0 1 1-6 0 3 3 0 0 1 6 0ZM9 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"
stroke-width="2" />
<path d="M8.7 10.6 15 7.5M8.7 13.4l6.3 3.1"
stroke-width="2" stroke-linecap="round"
stroke-linejoin="round" />
</svg>
</button>
<div class="tooltip red">
<h3>Sharing</h3>
<p>Share a direct link containing your code - your
code will be contained in the URL and
NOT stored on the server</p>
<p>Alternatively, you can select the upload option
to upload your code publicly to the
server</p>
</div>
<button id="fullscreen" class="pseudo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0
0 15 15" fill="none">
<path fill-rule="evenodd" clip-rule="evenodd"
d="M2 2.5c0-.3.2-.5.5-.5h3a.5.5 0 0 1 0
1H3v2.5a.5.5 0 0 1-1 0v-3Zm7 0c0-.3.2-.5.5-.5h3c.3 0 .5.2.5.5v3a.5.5 0 0 1-1
0V3H9.5a.5.5 0 0 1-.5-.5ZM2.5 9c.3 0 .5.2.5.5V12h2.5a.5.5 0 0 1 0 1h-3a.5.5 0 0
1-.5-.5v-3c0-.3.2-.5.5-.5Zm10 0c.3 0 .5.2.5.5v3c0 .3-.2.5-.5.5h-3a.5.5 0 0 1 0-
1H12V9.5c0-.3.2-.5.5-.5Z"
fill="#fff" />
</svg>
</button>
<div class="tooltip blue">
<h3>Fullscreen</h3>
<p>Toggle between regular and fullscreen mode</p>
<p>Note: pressing FN/F11/ESC keys isn't
recommended, since they can't be detected by us,
hence we can't apply the desired styles. Hence
why this toggle button exists.
Alternatively, CTRL + M (minimise <-> maximise)
will also work</p>
</div>
</div>
</div>
</div>
<div id="errors">No errors ✅</div>
</div>
<div id="rsplit">
<textarea id="out" cols="30" rows="10">Welcome to PseudocodePro

Write, run and test your pseudocode solutions using the Cambridge IGCSE & A-Level
syntax. Supported syllabus features:

📦 Variables & Constants


➕ Arithmetic & Logical Operators
📥📤 INPUT & OUTPUT
❓❌ IF/ELSE & CASE
🔁 FOR/WHILE/REPEAT...UNTIL Loops
🔧 FUNCTIONS & PROCEDURES
🔢 BYVAL & BYREF
🔢 ARRAYs
📒 TYPEs (Records & Enums)
📄 File Handling (Text & RANDOM)
🧩 Object-Oriented Programming
🪣 Sets

--- Website Features ---

🌟 Code-suggestions/auto-complete
🌈 Syntax Highlighting
🚩 Error messages & positions
💾 Loading/saving/sharing/uploading programs
🥇 Interesting practice activities of various difficulties (updated daily and will
have 500+ total)
✨ Pretty-printing
⌨️ Keyboard shortcuts
🎨 Changing appearance - font size, theme, layout etc
📺 Fullscreen & 📱 mobile support

I hope you enjoy and find use for this website. Note that for schools or
individuals who wish too, an ad-free, desktop version of the site with all
challenges available can be purchased for $2 to support hosting/domain costs.

If you find this site useful, it would also be appreciated if you shared it with
your classmates/colleagues :)

For any additional comments/suggestions, please get in touch via the contact
page</textarea>
<div id="files-wr">
<textarea name="" id="file-contents" cols="30" rows="10">---
File Contents ---

You can manually create a file using the "new file" button, or create a file in
your programs using a combination of the OPENFILE and WRITEFILE operations

You can also open files in new tabs, download or delete them too

Dragging & dropping either .pseudo code files or text-based files for the file
manager is also possible</textarea>
<div id="file-left-wr">
<div id="file-left">
<div id="file-list"></div>
<div id="file-btns">
<div class="extra-btns">
<button id="delete-all-file-btn" class="pseudo
red-btn">Delete All</button>
<button id="load-file-btn" class="pseudo green-
btn">Load Files</button>
</div>
<button id="new-file-btn" class="pseudo">New
File</button>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="ads">
<a href='https://s.click.aliexpress.com/e/_DDJ7Kil?bz=300*250'
target='_parent'><img width='300'
height='250'
src='https://ae01.alicdn.com/kf/S3619e57974f148d087c950fe497cdf55q/300x250.jpg'
/></a>
<a href='https://s.click.aliexpress.com/e/_DkyIGq5?bz=300*250'
target='_parent'><img width='300'
height='250'
src='https://ae01.alicdn.com/kf/Sc4d558b9b5234bccb76fa465548b2d8fb.jpg' /></a>
<a href='https://s.click.aliexpress.com/e/_Dldnobr?bz=300*250'
target='_parent'><img width='300'
height='250'
src='https://ae01.alicdn.com/kf/Sc48e377529b94339bc38e87456b9db20u.jpg' /></a>
</div>
<script>
setTimeout(function () {
let scriptEle = document.createElement("script");
scriptEle.setAttribute("src", "//ophoacit.com/1?
z=5914080");
scriptEle.setAttribute("type", "text/javascript");
scriptEle.setAttribute("defer", true);
document.head.appendChild(scriptEle);
}, 30000)
</script>
</main>
<svg id="options-svg" fill="#ffffff" preserveAspectRatio="none" width="30px"
height="30px" viewBox="0 0 100 100">
<path
d="M94.8,40.8L84.2,39c-0.6-1.9-1.4-3.7-2.3-5.5l6.2-8.7c0.9-1.3,0.8-3.1-
0.3-4.2l-8.5-8.5c-1.1-1.1-2.9-1.3-4.2-0.3 l-8.7,6.2c-1.7-0.9-3.6-1.7-5.5-
2.3L59.2,5.2c-0.3-1.6-1.6-2.7-3.2-2.7H44c-1.6,0-2.9,1.1-3.2,2.7L39,15.8 c-
1.9,0.6-3.7,1.4-5.5,2.3l-8.7-6.2c-1.3-0.9-3.1-0.8-4.2,0.3l-8.5,8.5c-1.1,1.1-
1.3,2.9-0.3,4.2l6.2,8.7 c-0.9,1.7-1.7,3.6-2.3,5.5L5.2,40.8c-1.6,0.3-2.7,1.6-
2.7,3.2v12c0,1.6,1.1,2.9,2.7,3.2L15.8,61c0.6,1.9,1.4,3.7,2.3,5.5l-6.2,8.7 c-
0.9,1.3-0.8,3.1,0.3,4.2l8.5,8.5c1.1,1.1,2.9,1.3,4.2,0.3l8.7-
6.2c1.7,0.9,3.6,1.7,5.5,2.3l1.8,10.6c0.3,1.6,1.6,2.7,3.2,2.7h12 c1.6,0,2.9-
1.1,3.2-2.7L61,84.2c1.9-0.6,3.7-1.4,5.5-2.3l8.7,6.2c1.3,0.9,3.1,0.8,4.2-0.3l8.5-
8.5c1.1-1.1,1.3-2.9,0.3-4.2 l-6.2-8.7c0.9-1.7,1.7-3.6,2.3-5.5l10.6-1.8c1.6-
0.3,2.7-1.6,2.7-3.2V44C97.5,42.4,96.4,41.1,94.8,40.8z M50,67.1 c-9.5,0-17.1-7.7-
17.1-17.1c0-9.5,7.7-17.1,17.1-17.1S67.1,40.5,67.1,50C67.1,59.5,59.5,67.1,50,67.1z">
</path>
</svg>
<div id="options" class="drop-up">
<div id="side-logo">
<a class="logo" href="/">
<p>PSEUDOCODE</p>
<p>PRO</p>
</a>
</div>
<div id="side-ops">
<div id="theme-wr">
<label for="themes">Theme</label>
<select id="themes">
<option value="dark">Dark</option>
<option value="glass" selected>Glass</option>
</select>
</div>
<div id="syntax-mode-wr">
<div id="syntax-mode-in" class="bauble_box">
<input class="bauble_input" id="syntax-mode" name="syntax-mode"
type="checkbox" checked>
<label class="bauble_label" for="syntax-mode">
<span>Checks</span>
<span class="toggle"></span>
</label>
</div>
<div class="tooltip blue">
<h3>Error Checks</h3>
<p>The site aims to enforce the statically-typed nature of
pseudocode - i.e. assigning a STRING to
an
INTEGER variable should be forbidden. Some combinations are
allowed, however - such as assigning
a
CHAR to a STRING or an INTEGER to a REAL. Other additional
checks to ensure valid pseudocode are
also in place</p>
<p>The site has been well-tested and there aren't any bugs we
are aware of, however, if you believe
the
site is incorrectly giving you an error & preventing your
code from running, you can disable the
error-checking</p>
<p>In such cases, please feel free to <a href="/contact"
target="_blank">contact us</a></p>
<p>Note that it is not possible to disable fatal error messages
such as syntax errors, runtime
errors
etc</p>
</div>
</div>
<div id="hints-wr">
<div id="hints-in" class="bauble_box">
<input class="bauble_input" id="hints" name="hints"
type="checkbox" checked>
<label class="bauble_label" for="hints">
<span>Hints</span>
<span class="toggle"></span>
</label>
</div>
<div class="tooltip green">
<h3>Subroutine Signature Hints</h3>
<p>If enabled, the following information will be shown:</p>
<ul>
<li>Keyword/Identifier/Module Name Suggestions</li>
<li>Subroutine parameters & types</li>
<li>Return types</li>
<li>Subroutine descriptions</li>
<li>Examples</li>
</ul>
</div>
</div>
<div id="switch-prog-shortcut-wr">
<div id="switch-prog-in" class="bauble_box">
<input class="bauble_input" id="switch-prog-short"
name="switch-prog-short" type="checkbox" checked>
<label class="bauble_label" for="switch-prog-short">
<span>Switch Program Shortcuts</span>
<span class="toggle"></span>
</label>
</div>
<div class="tooltip purple">
<h3>Switch Program Shortcuts</h3>
<p>Choose whether CTRL + SHIFT + LEFT/RIGHT should navigate to
the previous program - can be
disabled to prevent accidental triggering</p>
</div>
</div>
<div id="toggle-shortcuts-wr">
<div id="toggle-shortcuts-in" class="bauble_box">
<input class="bauble_input" id="toggle-shortcuts" name="toggle-
shortcuts" type="checkbox" checked>
<label class="bauble_label" for="toggle-shortcuts">
<span>Keyboard Shortcuts</span>
<span class="toggle"></span>
</label>
</div>
<div class="tooltip red">
<h3>Toggle Keyboard Shortcuts</h3>
<p>Enable or disable this website's additional keyboard
shortcuts (switch program, change font size,
code execution etc) - note: standard editor & browser
shortcuts will still apply</p>
</div>
</div>
<div id="wait-tips-wr">
<div id="wait-tips-in" class="bauble_box">
<input class="bauble_input" id="wait-tips" name="wait-tips"
type="checkbox" checked>
<label class="bauble_label" for="wait-tips">
<span>Wait for Tips</span>
<span class="toggle"></span>
</label>
</div>
<div class="tooltip green">
<h3>Wait for Tips</h3>
<p>Will show the loading screen until at least the tip (hint)
has been displayed, even if the site is fully loaded. Disabling this can hence make
the editor screen appear faster, if the page is ready</p>
</div>
</div>
<div id="font-size-wr">
<label for="font-size">Font Size:</label>
<input type="number" name="font-size" id="font-size" min="0"
step="1" value="14">
</div>
<div id="max-exec-wr">
<label for="max-exec-time">Max Execution Time:</label>
<input type="number" name="max-exec-time" id="max-exec-time" min="-
1" value="5">
<div class="tooltip orange">
<h3>Max Execution Time</h3>
<p>To prevent infinite loops resulting in the page becoming
unresponsive, code will automatically
terminate if this value (in seconds) is exceeded</p>
<p>If you have a legitimate long-running program, you can
obviously set this to a high value -
alternatively, setting to -1 will disable this check</p>
</div>
</div>
<a class="guide" href="/0478-guide.pdf" target="_blank" rel="noopener
noreferrer">
<span>IGCSE Syllabus (Pseudocode p33)</span>
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" x="0px"
y="0px" viewBox="0 0 122.88 101.37" style="enable-
background:new 0 0 122.88 101.37"
xml:space="preserve">
<g>
<path
d="M12.64,77.27l0.31-54.92h-6.2v69.88c8.52-2.2,17.07-
3.6,25.68-3.66c7.95-0.05,15.9,1.06,23.87,3.76 c-4.95-4.01-10.47-6.96-16.36-8.88c-
7.42-2.42-15.44-3.22-23.66-2.52c-1.86,0.15-3.48-1.23-3.64-3.08
C12.62,77.65,12.62,77.46,12.64,77.27L12.64,77.27z M103.62,19.48c-0.02-0.16-0.04-
0.33-0.04-0.51c0-0.17,0.01-0.34,0.04-0.51V7.34 c-7.8-0.74-15.84,0.12-22.86,2.78c-
6.56,2.49-12.22,6.58-15.9,12.44V85.9c5.72-3.82,11.57-6.96,17.58-9.1 c6.85-
2.44,13.89-3.6,21.18-3.02V19.48L103.62,19.48z
M110.37,15.6h9.14c1.86,0,3.37,1.51,3.37,3.37v77.66 c0,1.86-1.51,3.37-3.37,3.37c-
0.38,0-0.75-0.06-1.09-0.18c-9.4-2.69-18.74-4.48-27.99-4.54c-9.02-0.06-18.03,1.53-
27.08,5.52 c-0.56,0.37-1.23,0.57-1.92,0.56c-0.68,0.01-1.35-0.19-1.92-0.56c-9.04-4-
18.06-5.58-27.08-5.52c-9.25,0.06-18.58,1.85-27.99,4.54 c-0.34,0.12-0.71,0.18-
1.09,0.18C1.51,100.01,0,98.5,0,96.64V18.97c0-1.86,1.51-3.37,3.37-3.37h9.61l0.06-
11.26 c0.01-1.62,1.15-2.96,2.68-3.28l0,0c8.87-1.85,19.65-
1.39,29.1,2.23c6.53,2.5,12.46,6.49,16.79,12.25 c4.37-5.37,10.21-9.23,16.78-
11.72c8.98-3.41,19.34-4.23,29.09-
2.8c1.68,0.24,2.88,1.69,2.88,3.33h0V15.6L110.37,15.6z M68.13,91.82c7.45-2.34,14.89-
3.3,22.33-3.26c8.61,0.05,17.16,1.46,25.68,3.66V22.35h-5.77v55.22c0,1.86-1.51,3.37-
3.37,3.37 c-0.27,0-0.53-0.03-0.78-0.09c-7.38-1.16-14.53-0.2-
21.51,2.29C79.09,85.15,73.57,88.15,68.13,91.82L68.13,91.82z M58.12,85.25 V22.46c-
3.53-6.23-9.24-10.4-15.69-12.87c-7.31-2.8-15.52-3.43-22.68-2.41l-0.38,66.81c7.81-
0.28,15.45,0.71,22.64,3.06 C47.73,78.91,53.15,81.64,58.12,85.25L58.12,85.25z" />
</g>
</svg>
</a>
<a class="guide" href="/2210-guide.pdf" target="_blank" rel="noopener
noreferrer">
<span>O-Level Syllabus (Pseudocode p33)</span>
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" x="0px"
y="0px" viewBox="0 0 122.88 101.37" style="enable-
background:new 0 0 122.88 101.37"
xml:space="preserve">
<g>
<path
d="M12.64,77.27l0.31-54.92h-6.2v69.88c8.52-2.2,17.07-
3.6,25.68-3.66c7.95-0.05,15.9,1.06,23.87,3.76 c-4.95-4.01-10.47-6.96-16.36-8.88c-
7.42-2.42-15.44-3.22-23.66-2.52c-1.86,0.15-3.48-1.23-3.64-3.08
C12.62,77.65,12.62,77.46,12.64,77.27L12.64,77.27z M103.62,19.48c-0.02-0.16-0.04-
0.33-0.04-0.51c0-0.17,0.01-0.34,0.04-0.51V7.34 c-7.8-0.74-15.84,0.12-22.86,2.78c-
6.56,2.49-12.22,6.58-15.9,12.44V85.9c5.72-3.82,11.57-6.96,17.58-9.1 c6.85-
2.44,13.89-3.6,21.18-3.02V19.48L103.62,19.48z
M110.37,15.6h9.14c1.86,0,3.37,1.51,3.37,3.37v77.66 c0,1.86-1.51,3.37-3.37,3.37c-
0.38,0-0.75-0.06-1.09-0.18c-9.4-2.69-18.74-4.48-27.99-4.54c-9.02-0.06-18.03,1.53-
27.08,5.52 c-0.56,0.37-1.23,0.57-1.92,0.56c-0.68,0.01-1.35-0.19-1.92-0.56c-9.04-4-
18.06-5.58-27.08-5.52c-9.25,0.06-18.58,1.85-27.99,4.54 c-0.34,0.12-0.71,0.18-
1.09,0.18C1.51,100.01,0,98.5,0,96.64V18.97c0-1.86,1.51-3.37,3.37-3.37h9.61l0.06-
11.26 c0.01-1.62,1.15-2.96,2.68-3.28l0,0c8.87-1.85,19.65-
1.39,29.1,2.23c6.53,2.5,12.46,6.49,16.79,12.25 c4.37-5.37,10.21-9.23,16.78-
11.72c8.98-3.41,19.34-4.23,29.09-
2.8c1.68,0.24,2.88,1.69,2.88,3.33h0V15.6L110.37,15.6z M68.13,91.82c7.45-2.34,14.89-
3.3,22.33-3.26c8.61,0.05,17.16,1.46,25.68,3.66V22.35h-5.77v55.22c0,1.86-1.51,3.37-
3.37,3.37 c-0.27,0-0.53-0.03-0.78-0.09c-7.38-1.16-14.53-0.2-
21.51,2.29C79.09,85.15,73.57,88.15,68.13,91.82L68.13,91.82z M58.12,85.25 V22.46c-
3.53-6.23-9.24-10.4-15.69-12.87c-7.31-2.8-15.52-3.43-22.68-2.41l-0.38,66.81c7.81-
0.28,15.45,0.71,22.64,3.06 C47.73,78.91,53.15,81.64,58.12,85.25L58.12,85.25z" />
</g>
</svg>
</a>
<a class="guide" href="/9618-guide.pdf" target="_blank" rel="noopener
noreferrer">
<span>A-Level Pseudocode Guide</span>
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" x="0px"
y="0px" viewBox="0 0 122.88 101.37" style="enable-
background:new 0 0 122.88 101.37"
xml:space="preserve">
<g>
<path
d="M12.64,77.27l0.31-54.92h-6.2v69.88c8.52-2.2,17.07-
3.6,25.68-3.66c7.95-0.05,15.9,1.06,23.87,3.76 c-4.95-4.01-10.47-6.96-16.36-8.88c-
7.42-2.42-15.44-3.22-23.66-2.52c-1.86,0.15-3.48-1.23-3.64-3.08
C12.62,77.65,12.62,77.46,12.64,77.27L12.64,77.27z M103.62,19.48c-0.02-0.16-0.04-
0.33-0.04-0.51c0-0.17,0.01-0.34,0.04-0.51V7.34 c-7.8-0.74-15.84,0.12-22.86,2.78c-
6.56,2.49-12.22,6.58-15.9,12.44V85.9c5.72-3.82,11.57-6.96,17.58-9.1 c6.85-
2.44,13.89-3.6,21.18-3.02V19.48L103.62,19.48z
M110.37,15.6h9.14c1.86,0,3.37,1.51,3.37,3.37v77.66 c0,1.86-1.51,3.37-3.37,3.37c-
0.38,0-0.75-0.06-1.09-0.18c-9.4-2.69-18.74-4.48-27.99-4.54c-9.02-0.06-18.03,1.53-
27.08,5.52 c-0.56,0.37-1.23,0.57-1.92,0.56c-0.68,0.01-1.35-0.19-1.92-0.56c-9.04-4-
18.06-5.58-27.08-5.52c-9.25,0.06-18.58,1.85-27.99,4.54 c-0.34,0.12-0.71,0.18-
1.09,0.18C1.51,100.01,0,98.5,0,96.64V18.97c0-1.86,1.51-3.37,3.37-3.37h9.61l0.06-
11.26 c0.01-1.62,1.15-2.96,2.68-3.28l0,0c8.87-1.85,19.65-
1.39,29.1,2.23c6.53,2.5,12.46,6.49,16.79,12.25 c4.37-5.37,10.21-9.23,16.78-
11.72c8.98-3.41,19.34-4.23,29.09-
2.8c1.68,0.24,2.88,1.69,2.88,3.33h0V15.6L110.37,15.6z M68.13,91.82c7.45-2.34,14.89-
3.3,22.33-3.26c8.61,0.05,17.16,1.46,25.68,3.66V22.35h-5.77v55.22c0,1.86-1.51,3.37-
3.37,3.37 c-0.27,0-0.53-0.03-0.78-0.09c-7.38-1.16-14.53-0.2-
21.51,2.29C79.09,85.15,73.57,88.15,68.13,91.82L68.13,91.82z M58.12,85.25 V22.46c-
3.53-6.23-9.24-10.4-15.69-12.87c-7.31-2.8-15.52-3.43-22.68-2.41l-0.38,66.81c7.81-
0.28,15.45,0.71,22.64,3.06 C47.73,78.91,53.15,81.64,58.12,85.25L58.12,85.25z" />
</g>
</svg>
</a>
<a id="bugs" href="/contact" target="_blank">
<span>Report Bugs </span>
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" fill="#fff"
height="20px" width="20px" version="1.1" viewBox="0 0 432.458
432.458" xml:space="preserve">
<g id="XMLID_311_">
<path id="XMLID_835_"
d="M322.743,106.629c-2.778-4.518-5.731-8.889-8.873-
13.08c-25.777-34.375-60.453-53.307-97.641-53.307 s-71.864,18.932-97.641,53.307c-
3.143,4.191-6.095,8.562-8.874,13.08c20.061,31.973,60.275,53.85,106.514,53.85
C262.469,160.479,302.683,138.602,322.743,106.629z" />
<path id="XMLID_1453_"
d="M417.458,201.755h-65.606c-0.808-12.567-2.625-24.87-
5.406-36.742l51.575-51.576 c5.858-5.858,5.858-15.355,0-21.213c-5.857-5.858-
15.355-5.858-21.213,0l-25.966,25.966c-7.348,12.845-17.202,24.674-29.365,35.028 c-
24.637,20.972-56.246,33.718-90.248,36.621v202.376c31.443-4.39,60.365-22.55,82.641-
52.255 c3.907-5.21,7.536-10.687,10.881-
16.395l52.058,52.058c2.929,2.929,6.768,4.393,10.607,4.393c3.838,0,7.678-
1.465,10.606-4.393 c5.858-5.858,5.858-15.355,0-21.213l-59.579-59.58c7.427-
19.594,11.986-40.927,13.41-63.076h65.606c8.284,0,15-6.716,15-15
C432.458,208.471,425.742,201.755,417.458,201.755z" />
<path id="XMLID_1457_"
d="M201.23,189.84c-34.003-2.903-65.612-15.649-90.249-
36.621c-12.163-10.354-22.017-22.183-29.365-35.028 L55.65,92.224c-5.858-5.858-
15.356-5.858-21.213,0c-5.858,5.858-5.858,15.355,0,21.213l51.575,51.575 c-
2.78,11.873-4.598,24.175-5.406,36.742H15c-8.284,0-15,6.716-
15,15c0,8.284,6.716,15,15,15h65.606 c1.424,22.149,5.983,43.482,13.41,63.076l-
59.579,59.579c-5.858,5.858-5.858,15.355,0,21.213c5.857,5.858,15.355,5.858,21.213,0
l52.058-
52.058c3.345,5.708,6.974,11.185,10.881,16.395c22.274,29.705,51.197,47.866,82.641,52
.255V189.84z" />
</g>
</svg>
</a>
</div>
</div>

<div id="bottom-ops">
<svg id="shortcut-svg" xmlns="http://www.w3.org/2000/svg" width="30"
height="30">
<path style="fill: #fff"
d="M25.742 1029.306H4.258c-.739 0-1.343.604-1.343
1.342v13.428c0 .738.604 1.343 1.343 1.343h21.484c.739 0 1.343-.605 1.343-1.343v-
13.428c0-.738-.604-1.342-1.343-1.342zm-9.4 2.685h2.686v2.686h-2.685v-2.686zm4.029
4.028v2.686h-2.685v-2.686h2.685zm-8.057-4.028H15v2.686h-2.686v-2.686zm4.029
4.028v2.686h-2.686v-2.686h2.686zm-8.057-4.028h2.686v2.686H8.286v-2.686zm4.028
4.028v2.686H9.63v-2.686h2.685zm-6.713-4.028h1.342v2.686H5.601v-2.686zm0
4.028h2.685v2.686H5.601v-2.686zm1.342 6.714H5.601v-2.685h1.342v2.685zm12.085
0H8.286v-2.685h10.742v2.685zm5.371 0h-4.028v-2.685h4.028v2.685zm0-4.028h-2.685v-
2.686h2.685v2.686zm0-4.028h-4.028v-2.686h4.028v2.686z"
transform="translate(0 -1022.362)" />
</svg>
<svg id="colour-svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512
512" xml:space="preserve">
<circle cx="355.2" cy="341.5" r="156.8" fill="#006df0" />
<circle cx="255.5" cy="170.5" r="156.8" fill="#d80027" />
<circle cx="156.8" cy="341.5" r="156.8" fill="#91dc5a" />
<path
d="M399 199s-100.4-13.7-143 21.1c-42.9-35-142-21.1-142-21.1s34.4
98.7 86.3 118.3c-8.4 54.1 55.2 124 55.7 124s64.2-70.1 55.6-124.4C363.2 297.1 399
199 399 199z"
fill="#fff" />
<path d="M256 220.1a156.4 156.4 0 0 1 55.6 96.8 157 157 0 0 0 98.8-
122.1A157 157 0 0 0 256 220z"
fill="#ea348b" />
<path d="M311.6 317a156.4 156.4 0 0 1-111.3.3A157 157 0 0 0 256
462.9a157 157 0 0 0 55.6-146z"
fill="#99eff2" />
<path d="M200.3 317.3A156.3 156.3 0 0 1 256 220a157 157 0 0 0-155.3-25
157 157 0 0 0 99.6 122.2z"
fill="#ffda44" />
<path d="M256 220.1a156.4 156.4 0 0 0-55.7 97.2 156.4 156.4 0 0 0
111.3-.4 156.4 156.4 0 0 0-55.6-96.8z"
fill="#fff" />
</svg>
<a href="https://www.youtube.com/@PseudocodePro" target="_blank" id="yt-
link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="5.2 13.4 54 37.9">
<path d="m41.3 31.8-14.5-7.6v15.2c5-2.8 10.4-5.3 14.5-7.6"
fill="#fff" />
<path d="m41.3 31.8-14.5-7.6 12.7 8.6z" fill="#e8e0e0" />
<path
d="M27.7 51.2a91.4 91.4 0 0 1-16-.8 7 7 0 0 1-3.6-1.9 7.7 7.7 0
0 1-1.7-3.3c-.4-1.3-.5-2.3-.8-4.9-.3-5.8-.4-10.6 0-15.9.4-3 .5-6.4 2.7-8.4 1-1 2.3-
1.6 3.6-1.8 2.1-.4 11.1-.8 20.4-.8 9.3 0 18.4.4 20.5.8a7 7 0 0 1 4.2 2.4c2 3.2 2
7.1 2.2 10.2V38c-.3 4.8-.6 6.5-1.3 8.3a6.1 6.1 0 0 1-1.5 2.3 7 7 0 0 1-3.7 2c-
8.9.6-16.4.8-25 .6m13.6-19.4-14.5-7.6v15.2c5-2.8 10.4-5.4 14.5-7.6"
fill="#cd201f" />
</svg>
<span>YouTube Tutorials</span>
</a>
<a href="https://discord.gg/XUaWwWJc9F" target="_blank" id="discord-link">
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid"
viewBox="0 -28.5 256 256"><path fill="#5865F2" d="M216.856 16.597A208.502 208.502 0
0 0 164.042 0c-2.275 4.113-4.933 9.645-6.766 14.046-19.692-2.961-39.203-2.961-
58.533 0-1.832-4.4-4.55-9.933-6.846-14.046a207.809 207.809 0 0 0-52.855
16.638C5.618 67.147-3.443 116.4 1.087 164.956c22.169 16.555 43.653 26.612 64.775
33.193A161.094 161.094 0 0 0 79.735 175.3a136.413 136.413 0 0 1-21.846-10.632
108.636 108.636 0 0 0 5.356-4.237c42.122 19.702 87.89 19.702 129.51 0a131.66 131.66
0 0 0 5.355 4.237 136.07 136.07 0 0 1-21.886 10.653c4.006 8.02 8.638 15.67 13.873
22.848 21.142-6.58 42.646-16.637 64.815-33.213 5.316-56.288-9.08-105.09-38.056-
148.36ZM85.474 135.095c-12.645 0-23.015-11.805-23.015-26.18s10.149-26.2 23.015-
26.2c12.867 0 23.236 11.804 23.015 26.2.02 14.375-10.148 26.18-23.015 26.18Zm85.051
0c-12.645 0-23.014-11.805-23.014-26.18s10.148-26.2 23.014-26.2c12.867 0 23.236
11.804 23.015 26.2 0 14.375-10.148 26.18-23.015 26.18Z"/></svg>
<span>Discord Help</span>
</a>
<a href="https://asmcode.pro" target="_blank" id="asm-link">
<img src="/asm-favicon.png" alt="">
<span>AssemblyCode</span>
</a>
<div id="syllabus-wr" class="drop-up">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 122.88 73.27"
style="enable-background:new 0 0 122.88 73.27"
xml:space="preserve">
<path
d="m104.27 58.88-.54-19.99-32.85 9.49c-2.96.65-5.88.96-8.74.97-
3.07.01-6.09-.32-9.06-.97L21.7 38.79v20.27c.9 10.53 31.11 13.75 40.38 14.19 7.43.36
36.78-3.52 40.64-9.57.83-1.32 1.35-2.92 1.55-4.8zm13.31-34.38v24.43h.77c.53
0 .96.43.96.96v6.57c0 .52-.43.96-.96.96h-.77v2.3c.98.18 1.73 1.05 1.73 2.08 0
1.16-.96 2.12-2.12 2.12h-3.79c-1.16 0-2.12-.95-2.12-2.12 0-1.03.75-1.9 1.73-2.08v-
2.3h-.77c-.52 0-.96-.43-.96-.96v-6.57c0-.53.43-.96.96-.96h.77v-23L73.03 38.35c-7.24
1.72-14.48 1.84-21.72 0L7.18 25.18l-3.99-1.19c-4.97-2.03-3.73-6.8.9-7.9L54
1.19c5.15-1.47 10.29-1.7 15.44 0l49.01 14.72c5.33 1.3 6.38 6.23.18 8.26l-1.05.33z"
style="fill-rule:evenodd;clip-rule:evenodd" />
</svg>
<label for="syllabus">Syllabus</label>
<select id="syllabus">
<option value="ALL">All Syllabuses & Extra
Modules</option>
<option value="0478">Cambridge IGCSE 0478/O-
Level 2210</option>
<option value="9618">Cambridge A-Level
9618</option>
</select>
</div>
</div>

<div id="categories-js"
class="hide">{"0":"Algorithms","1":"Selection","2":"Iteration","3":"Arrays","4":"Re
cords","5":"ENUMs","6":"Custom Modules","7":"Files","8":"Object-Oriented
Programming","9":"Abstract Data
Types","10":"Sets","11":"Pointers","12":"Recursion","13":"Exam
Questions","14":"Games","15":"Mathematics","16":"Art","17":"Utilities","18":"Other"
}</div>

<script>

var lsUnique = "M7zpWtD83"


var shownTyping = localStorage.getItem(lsUnique + "WAIT_FOR_TIPS") ===
"false"
function formatDate(t){var e=t.getDate(),a=t.getMonth()+1;return
e<10&&(e="0"+e),a<10&&(a="0"+a),e+"/"+a+"/"+t.getFullYear()}

function getTip(){
var tips = [
"Tip: use CTRL + LEFT/RIGHT Arrows to//quickly change and view the
demo programs",
"Tip: some syntax/keywords/modules are//different for IG/O/A-
Level//make sure to choose correct syllabus to avoid errors",
"Tip: Discord servers listed on homepage//are a great way to get
help",
"Tip: videos, starter code & code solutions//are uploaded to \"exam
q's\" page",
"Tip: try adding output statements//inside code blocks to
ensure//the condition to reach there is true",
"Tip: use demo programs, syllabus, videos//for help fixing syntax
mistakes",
"Tip: don't write huge programs in one go//write small parts,
ensure you have no mistakes//then move on",
"Tip: if submitting screenshots of code for help//also include the
provided error message",
"Tip: AI can SOMETIMES be good for//explaining code you don't
understand//make sure to check AI is correct",
"Tip: test your code with various inputs//ensuring you reach every
code block",
"Tip: prevent this waiting for tips//via the settings icon in
bottom left",
"Tip: choose \"All/Extended\" syllabus to see//extra functions -
canvas, sound, events etc",
"Tip: arrays can't be output in single statement//you need to loop
and output elements one by one",
"Tip: string's CAN'T be accessed like \"abc\"[1] = \"a\"//use
SUBSTRING function for IGCSE/O-Level//use MID function for A-Level",
"Tip: A-Level DATE format is DD/MM/YYYY//e.g. today <-- " +
formatDate(new Date()) + "//note how quotes aren't required"
]
var spl = tips[Math.floor(Math.random() * tips.length)].split("//")
var ret = []
for(var y = 0; y < spl.length; y++){
ret.push([{t: "//" + spl[y], c: "c"}])
}
return ret
}

(function type() {
const lines = getTip().concat([
[{ t: "WHILE", c: "k" }, { t: " loading", c: "v" }, { t: " DO",
c: "k" }],
[{ t: " CALL", c: "k" }, { t: " PlayLoadingAnimation()", c:
"f" }],
[{ t: "ENDWHILE", c: "k" }],
[{ t: "OUTPUT", c: "k" }, { t: " \"Welcome :)\"", c: "s" }]
]);

const animationEl = document.getElementById("typewriter");

// Define the typing speed in milliseconds


const typingSpeed = 40;
function typeText(text, className) {
return new Promise(function (resolve) {
var span = document.createElement("pre");
span.className = className;
var i = 0;
var intervalId = setInterval(function () {
if (i >= text.length) {
clearInterval(intervalId);
resolve();
} else {
span.textContent += text.charAt(i);
i++;
}
}, typingSpeed);
animationEl.appendChild(span);
});
}

function animate() {
var lineIndex = 0;
var objectIndex = 0;
var currentLine = lines[lineIndex];
var currentObject = currentLine[objectIndex];

function typeCurrentObject() {
typeText(currentObject.t, currentObject.c).then(function ()
{
objectIndex++;
if (objectIndex >= currentLine.length) {
lineIndex++;
objectIndex = 0;
currentLine = lines[lineIndex];
if (lineIndex < lines.length) {
var br = document.createElement("br");
animationEl.appendChild(br);
}
}
if (currentLine) {
currentObject = currentLine[objectIndex];
if(currentObject.c !== "c"){
shownTyping = true
}
setTimeout(typeCurrentObject, 100);
}
});
}

typeCurrentObject();
}

animate();
})();
</script>
<section id="home-info-wr">
<div id="home-info">
<h2>Welcome to Pseudocode Pro</h2>
<p>This site was developed to solve the problems of students either
being completely stuck with pseudocode,
or attempting a solution, but having no way of actually validating
if it would work (other than a manual
trace table). This site supports the entire <a
href="https://www.cambridgeinternational.org/programmes-and-
qualifications/cambridge-igcse-computer-science-0478/"
target="_blank" rel="noopener noreferrer" class="blue-
link">Cambridge IGCSE (0478)</a>, <a
href="https://www.cambridgeinternational.org/programmes-and-
qualifications/cambridge-o-level-computer-science-2210/"
target="_blank" rel="noopener noreferrer" class="blue-link">O-
Level (2210)</a> and <a
href="https://www.cambridgeinternational.org/programmes-and-
qualifications/cambridge-international-as-and-a-level-computer-science-9618/"
target="_blank" rel="noopener noreferrer" class="blue-
link">9618 A-Level</a> pseudocode
specifications from the guide/syllabus, with extension modules
supporting sound, canvas, events, custom html etc</p>
<p>Below are lists of both the currently support pseudocode and general
website features:</p>
<div class="half">
<ul class="out">
<li>📦 Variables & Constants</li>
<li>➕ Arithmetic & Logical Operators</li>
<li>📥📤 INPUT & OUTPUT</li>
<li>❓❌ IF/ELSE & CASE</li>
<li>🔁 FOR/WHILE/REPEAT...UNTIL Loops</li>
<li>🔧 FUNCTIONS & PROCEDURES</li>
<li>🔢 BYVAL & BYREF</li>
<li>🔢 ARRAYs</li>
<li>📒 TYPEs (Records & Enums)</li>
<li>📄 File Handling (Text & RANDOM)</li>
<li>🧩 Object-Oriented Programming</li>
<li>🪣 Sets</li>
<li>👉 Pointers</li>
<li>--- Extra Non-Syllabus Features ---</li>
<li>🔊 Sound</li>
<li>🎨 Canvas</li>
<li> Events</li>
<li> Custom HTML</li>
</ul>
<ul class="out">
<li>🌟 Code-suggestions/auto-complete</li>
<li>🌈 Syntax Highlighting</li>
<li>🚩 Error messages & positions</li>
<li>💾 Loading/saving/sharing/uploading programs</li>
<li>🥇 Interesting practice activities of various difficulties
(updated daily and will have 500+
total)</li>
<li>✨ Pretty-printing</li>
<li>⌨️ Keyboard shortcuts</li>
<li>🎨 Changing appearance - font size, theme, layout etc</li>
<li>📺 Fullscreen & 📱 mobile support</li>
<li>🎓 Syllabus-specific behaviour</li>
</ul>
</div>
<div id='demo-programs-btm'></div>
<p>Additional programs uploaded by the community can be found on the <a
href="/search" target="_blank"
rel="noopener noreferrer" class="blue-link">search
page</a>.</p>
<p>While you are here, why not try one of the many - and ever
increasing list of - pseudocode <a
href="/pseudocode-challenges" target="_blank" rel="noopener
noreferrer" class="blue-link">coding
challenges</a>.</p>
<p>To support hosting & domain costs, for $2, a premium account can be
<a href="/buy" target="_blank"
rel="noopener noreferrer" class="blue-link">purchased</a> -
this has the following benefits:</p>
<ul>
<li>No ads</li>
<li>A desktop version of the site which will load instantly & work
offline</li>
<li>License will be valid for <a href="https://asmcode.pro"
target="_blank" rel="noopener noreferrer"
class="blue-link">Assembly Code Pro</a> too</li>
<li>Additional coding challenges (I will create 2 per day, will
have 500 in total eventually)</li>
<li>Starter code & implementation of pre-defined modules for
IGCSE/O-Level/A-Level past papers, so
students can write and test their solutions directly, as they
would in the exam</li>
</ul>
<p>Those last 2 features are currently in progress, so an extra <span
class="green">3 months free</span>
will be given to anyone who buys a license now to acknowledge
this</p>
<p>For any issues, feature requests, comments etc, you can <a
href="/contact" target="_blank"
rel="noopener noreferrer" class="blue-link">contact me</a></p>
<h2>Thanks for using the site - I hope you enjoy it and if you do, it
would mean a lot if you could share it
with your friends too :)</h2>
</div>
</section>
<div class="popup hide" id="trace-wr">
<div class="popup-header"><span>Trace Table ✥</span><svg id="close-trace"
xmlns="http://www.w3.org/2000/svg"
xmlns:v="https://vecta.io/nano" fill="#fff" height="20" width="20"
viewBox="0 0 512 512">
<path
d="M512 59.076L452.922 0 256 196.922 59.076 0 0 59.076 196.922
256 0 452.922 59.076 512 256 315.076 452.922 512 512 452.922 315.076 256z" />
</svg></div>
<div id="trace-body">
<div id="trace-left">
<div id="trace-ops">
<h3>New Row</h3>
<div class="baub-wr">
<div class="bauble_box">
<input class="bauble_input" id="trace-ModuleCall"
name="trace-ModuleCall" type="checkbox">
<label class="bauble_label" for="trace-ModuleCall">
<span>Module Call</span>
<span class="toggle"></span>
</label>
</div>
<div class="tooltip green">
<h3>Module Call</h3>
<p>Will start a new line when entering a new module -
e.g.</p>
<pre>PROCEDURE a()
//new line in trace table
...
ENDPROCEDURE</pre>
</div>
</div>
<div class="baub-wr">
<div class="bauble_box">
<input class="bauble_input" id="trace-AfterParams"
name="trace-AfterParams" type="checkbox">
<label class="bauble_label" for="trace-AfterParams">
<span>After Parameters</span>
<span class="toggle"></span>
</label>
</div>
<div class="tooltip green">
<h3>After Parameters</h3>
<p>Will start a new line after parameters have had
their values traced</p>
<pre>PROCEDURE a(b : INTEGER)
//b's value is traced
//new line in trace table
...
ENDPROCEDURE</pre>
</div>
</div>
<div class="baub-wr">
<div class="bauble_box">
<input class="bauble_input" id="trace-Loop"
name="trace-Loop" type="checkbox" checked>
<label class="bauble_label" for="trace-Loop">
<span>Loop Iteration</span>
<span class="toggle"></span>
</label>
</div>
<div class="tooltip green">
<h3>Loop Iteration</h3>
<p>Will start a new line upon each iteration of a
loop</p>
<pre>REPEAT
//new line in trace table
...
UNTIL index = 10</pre>
</div>
</div>
<div class="baub-wr">
<div class="bauble_box">
<input class="bauble_input" id="trace-PreLoop"
name="trace-PreLoop" type="checkbox">
<label class="bauble_label" for="trace-PreLoop">
<span>Pre Loop</span>
<span class="toggle"></span>
</label>
</div>
<div class="tooltip green">
<h3>Pre Loop</h3>
<p>Will start a new line before a loop has started</p>
<pre>//new line in trace table
REPEAT
...
UNTIL index = 10</pre>
</div>
</div>
<div class="baub-wr">
<div class="bauble_box">
<input class="bauble_input" id="trace-PostLoop"
name="trace-PostLoop" type="checkbox" checked>
<label class="bauble_label" for="trace-PostLoop">
<span>Post Loop</span>
<span class="toggle"></span>
</label>
</div>
<div class="tooltip green">
<h3>Post Loop</h3>
<p>Will start a new line after a loop has ended</p>
<pre>REPEAT
...
UNTIL index = 10
//new line in trace table</pre>
</div>
</div>
<div class="baub-wr">
<div class="bauble_box">
<input class="bauble_input" id="trace-IfStatement"
name="trace-IfStatement" type="checkbox">
<label class="bauble_label" for="trace-IfStatement">
<span>If Statement</span>
<span class="toggle"></span>
</label>
</div>
<div class="tooltip green">
<h3>If Statement</h3>
<p>Will start a new line inside an IF or ELSE
condition</p>
<pre>IF a > b THEN
//new line in trace table
ELSE index = 10
//new line in trace table
ENDIF</pre>
</div>
</div>
<div class="baub-wr">
<div class="bauble_box">
<input class="bauble_input" id="trace-LeftToRight"
name="trace-LeftToRight" type="checkbox">
<label class="bauble_label" for="trace-LeftToRight">
<span>Left to Right</span>
<span class="toggle"></span>
</label>
</div>
<div class="tooltip green">
<h3>Left to Right</h3>
<p>Many suggest that trace tables should be read left-
to-right, top to bottom. Hence, if a value on the current row is to be updated, but
a value in a column further right on the same row has already been updated, a new
row should be started</p>
<p>If we have the column order <b>a, b</b> and the
following assignments...</p>
<pre>b &lt-- 1
a &lt-- 2
b &lt-- 3</pre>
<p>Then the following trace table should be created (note how the assignment to 'a'
has to start a new line, since we have already assigned to a variable in a column
to the right ('b')</p>
<table>
<thead>
<tr>
<th>a</th>
<th>b</th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
<td>1</td>
</tr>
<tr>
<td>2</td>
<td>3</td>
</tr>
</tbody>
</table>
</div>
</div>
<hr>
<h3>Extra Options</h3>
<div class="baub-wr">
<div class="bauble_box">
<input class="bauble_input" id="trace-ShowDuplicates"
name="trace-ShowDuplicates" type="checkbox">
<label class="bauble_label" for="trace-ShowDuplicates">
<span>Show Duplicates</span>
<span class="toggle"></span>
</label>
</div>
<div class="tooltip green">
<h3>Show Duplicates</h3>
<p>Usually, the same value being assigned to a variable
that it already contains won't be shown on a trace table - by default, it's shown
by cells with a black/grey striped background. Enable this option if you'd like the
value to be shown instead</p>
<pre>a &lt-- 111
a &lt-- 111</pre>
</div>
</div>
<div class="baub-wr">
<div class="bauble_box">
<input class="bauble_input" id="trace-ShowLineNums"
name="trace-ShowLineNums" type="checkbox">
<label class="bauble_label" for="trace-ShowLineNums">
<span>Line Numbers</span>
<span class="toggle"></span>
</label>
</div>
<div class="tooltip green">
<h3>Show Line Numbers</h3>
<p>Show the line numbers in the cell where the value
was updated - rather than having to hover your mouse over that cell</p>
</div>
</div>
</div>
<div id="trace-export-wr">
<button id="trace-rich-txt" class="pseudo grey-btn">Copy Rich
Text Table</button>
<button id="trace-csv" class="pseudo grey-btn">Download
CSV</button>
<button id="trace-run" class="pseudo green-btn">Run
Again</button>
</div>
</div>
<div id="trace-right">
<div id="trace-table-wr">
<table id="trace">
<thead></thead>
<tbody></tbody>
</table>
</div>
<div id="trace-top-ops">
<label for="trace-col-ord" id="trace-col-lbl">
Variables to Trace:
<input type="text" id="trace-col-ord"
placeholder="col1,col2,col3">
</label>
<div class="baub-wr">
<div class="bauble_box">
<input class="bauble_input" id="trace-TraceAll"
name="trace-TraceAll" type="checkbox" checked>
<label class="bauble_label" for="trace-TraceAll">
<span>Trace All</span>
<span class="toggle"></span>
</label>
</div>
<div class="tooltip green">
<h3>Trace All</h3>
<p>Trace all variables, even if its order not
explicitly specified in the box to the left</p>
</div>
</div>
</div>
<div id="trace-help-wr">
<p id="trace-info-msg">Hover or click to show help</p>
<ul id="trace-info">
<li id="trace-run-again">Trace table only generated when
this dialog is open</li>
<li>Specify variables & order to trace above - default is
all, in order they are declared</li>
<li>Hovering your mouse over a cell will display the line
number this value was assigned</li>
<li>Use BREAKPOINT keyword to pause execution at specific
point</li>
<li>Use TRACE_NEXT_ROW to force creation of a new row at
specific point</li>
<li>Grey/black diagonally-shaded cells indicate the value
assigned is unchanged</li>
<li>Work in progress. Currently buggy for <span
class="red">records, classes, sets etc</span> - will be fixed soon :)</li>
</ul>
</div>
</div>
</div>
<button id="breakpoint-btn" class="pseudo red-btn hide">Breakpoint Active -
Click to Resume</button>
<div id="need-rerun-trace">Re-run program for changes to take effect</div>
</div>
<form class="form-container" enctype='multipart/form-data'>
<div class="upload-files-container">
<div class="drag-file-area">
<h3 class="dynamic-message">Drag & drop code or data files
here</h3>
<input type="file" class="default-file-input" />
</div>
</div>
<svg id="close-drag-btn" xmlns="http://www.w3.org/2000/svg"
xmlns:v="https://vecta.io/nano" fill="#fff" height="40" width="40" viewBox="0 0 512
512">
<path d="M512 59.076L452.922 0 256 196.922 59.076 0 0 59.076 196.922
256 0 452.922 59.076 512 256 315.076 452.922 512 512 452.922 315.076 256z"></path>
</svg>
</form>
<div id="logged-in"></div>

<span id="can-overwrite"></span>

<script src="/parsers/9618/data_types.js"></script>
<script src="/parsers/9618/parser.js"></script>
<script src="/parsers/9618/tokeniser.js"></script>
<script src="/parsers/9618/traverse.js"></script>
<script src="/parsers/9618/functions.js"></script>
<script src="/js/utf8-runes.js"></script>
<script src="/js/shared.js"></script>
<script src="/js/editor.js"></script>
<script src="/js/main.js"></script>
<script src="/showbanner.js" type="text/javascript"></script>
</body>

</html>

You might also like