For the code examples presented in this resource I am going to be using a sudo language.
|
|
The concept behind a sudo language is to be able to present programming concepts in a
|
|
language agnostic form so that the concepts can be translated to your language of choice.
|
|
\par
|
|
|
|
It is great that you have chosen lanauge X to use throughout this resource, but how is the sudo lanauge going to help you out?
|
|
Well, let's look at two examples and I will show their implementation in a few different languages.
|
|
Hopefully this will help you to understand how the language should be tanslated to others (especially if your language of choice is one that I use).
|
|
|
|
\subsection{Example 1}
|
|
|
|
\begin{lstlisting}[caption={Example 1 - Sudo Code}]
|
|
name = "Brett"
|
|
if name == "Brett"
|
|
print "Name Is Brett"
|
|
else
|
|
print "Name Is Not Brett"
|
|
\end{lstlisting}
|
|
|
|
For this example lets break it down line by line to make sure we know exactly what is going on.
|
|
|
|
\begin{enumerate}
|
|
\item {Store the value \pigVal{"Brett"} into the variable \pigVar{name}}
|
|
\item {Check if the variable \pigVar{name} is equal to the value \pigVal{"Brett"}}
|
|
\begin{enumerate}
|
|
\setcounter{enumii}{2}
|
|
\item {Print \pigOut{"Name Is Brett"} to the console}
|
|
\end{enumerate}
|
|
\setcounter{enumi}{3}
|
|
\item {Otherwise}
|
|
\begin{enumerate}
|
|
\setcounter{enumii}{4}
|
|
\item {Print \pigOut{"Name Is Not Brett"} to the console}
|
|
\end{enumerate}
|
|
\end{enumerate}
|
|
|
|
As far as programming goes this is a fairly simple process but let's try to translate this example to a few different languages to see how it is done.
|
|
|
|
\begin{lstlisting}[language=php,caption={Example 1 - PHP}]
|
|
<?php
|
|
$name = 'Brett';
|
|
if( $name === 'Brett' ){
|
|
echo 'Name Is Brett';
|
|
} else{
|
|
echo 'Name Is Not Brett';
|
|
}
|
|
\end{lstlisting}
|
|
|
|
\begin{lstlisting}[language=c,caption={Example 1 - C}]
|
|
int main{
|
|
char* name = "Brett";
|
|
if( name == "Brett" ){
|
|
printf("Name Is Brett");
|
|
} else{
|
|
printf("Name Is Not Brett");
|
|
}
|
|
return 0;
|
|
}
|
|
\end{lstlisting}
|
|
|
|
\begin{lstlisting}[language=python,caption={Example 1 - Python}]
|
|
name = "Brett"
|
|
if name is "Brett":
|
|
print "Name Is Brett"
|
|
else:
|
|
print "Name Is Not Brett"
|
|
\end{lstlisting}
|
|
|
|
\begin{lstlisting}[language=javascript,caption={Example 1 - Node.JS}]
|
|
var name = "Brett";
|
|
if( name == "Brett" ){
|
|
console.log("Name Is Brett");
|
|
} else{
|
|
console.log("Name Is Not Brett");
|
|
}
|
|
\end{lstlisting}
|
|
|
|
\begin{lstlisting}[language=java,caption={Example 1 - Java}]
|
|
class Example1{
|
|
public static void main( String[] args ){
|
|
String name = "Brett";
|
|
if( name.equals("Brett") ){
|
|
System.out.println("Name Is Brett");
|
|
} else{
|
|
System.out.println("Name Is Not Brett");
|
|
}
|
|
}
|
|
}
|
|
\end{lstlisting}
|
|
|
|
Notice that all of the actual examples end up looking about the same? This is the point of using the sudo language. This way I can discuss the core concepts of the lesson at hand and then those concepts can be directly applied to any language of your choice.
|
|
\par
|
|
|
|
Also, notice the Python implementation, it is almost line for line, word for word identical to the sudo language example. If you would like to choose a language closest to the sudo language, choose Python.
|
|
|
|
\subsection{Example 2}
|
|
Now that we have looked at a fairly simple example above, lets take a look at a more complicated example.
|
|
Do not be afraid if it does not make too much sense right now, but try and notice the similarities
|
|
between the sudo language and the actual code examples.
|
|
|
|
|
|
|
|
\begin{lstlisting}[caption={Example 2 - Sudo Code}]
|
|
class Person
|
|
private name
|
|
|
|
function getName()
|
|
return this.name
|
|
|
|
function setName( newName )
|
|
this.name = newName
|
|
|
|
|
|
p = new Person()
|
|
p.setName("Brett")
|
|
|
|
|
|
if p.getName() == "Brett"
|
|
print "Name Is Brett"
|
|
else
|
|
print "Name Is Not Brett"
|
|
\end{lstlisting}
|
|
|
|
Just like the last one, lets break down this example line by line to fine out whats going on.
|
|
|
|
\begin{enumerate}
|
|
\item {Create a new class called \pigVar{Person}}
|
|
\begin{enumerate}
|
|
\setcounter{enumii}{1}
|
|
\item {Create a private property \pigVar{name}}
|
|
\setcounter{enumii}{3}
|
|
|
|
\item {Create a method called \pigVar{getName} that requires no parameters}
|
|
\begin{enumerate}
|
|
\setcounter{enumiii}{4}
|
|
\item {When the function is called return the class property \pigVar{name}}
|
|
\end{enumerate}
|
|
\setcounter{enumii}{6}
|
|
|
|
\item {Create a method called \pigVar{setName} that takes a single parameter \pigVar{newName}}
|
|
\begin{enumerate}
|
|
\setcounter{enumiii}{7}
|
|
\item {When called set the class property \pigVar{name} equal to the parameter \pigVar{newName}}
|
|
\end{enumerate}
|
|
\end{enumerate}
|
|
|
|
\setcounter{enumi}{10}
|
|
\item {Create a new \pigVar{Person} object and store it in the variable \pigVar{p}}
|
|
\item {Call \pigVar{p}'s \pigVar{setName} method passing in the value \pigVal{"Brett"}}
|
|
|
|
\setcounter{enumi}{13}
|
|
\item {Call \pigVar{p}'s \pigVar{getName} method and check if the returned value is equal to \pigVal{"Brett"}}
|
|
\begin{enumerate}
|
|
\setcounter{enumii}{14}
|
|
\item {Print \pigOut{"Name Is Brett"} to the console}
|
|
\end{enumerate}
|
|
|
|
\setcounter{enumi}{15}
|
|
\item {Otherwsie}
|
|
\begin{enumerate}
|
|
\setcounter{enumii}{16}
|
|
\item {Print \pigOut{"Name Is Not Brett"} to the console}
|
|
\end{enumerate}
|
|
|
|
\end{enumerate}
|
|
|
|
Do not worry if this example does not make sense to you, you will be able to understand it well before the end of this resource.
|
|
\par
|
|
|
|
Just like with Example 1, here are some translations of the example.
|
|
|
|
\begin{lstlisting}[language=php,caption={Example 2 - PHP}]
|
|
<?php
|
|
class Person{
|
|
private $name;
|
|
|
|
public function getName(){
|
|
return $this->name;
|
|
}
|
|
|
|
public function setname( $newName ){
|
|
$this->name = $newName;
|
|
}
|
|
}
|
|
|
|
$p = new Person();
|
|
$p->setName('Brett');
|
|
|
|
if( $p->getName() === 'Brett' ){
|
|
echo 'Name Is Brett';
|
|
} else{
|
|
echo 'Name Is Not Brett';
|
|
}
|
|
\end{lstlisting}
|
|
|
|
\begin{lstlisting}[language=java,caption={Eample 2 - Java}]
|
|
class Person{
|
|
private String name;
|
|
|
|
public String getName(){
|
|
return this.name;
|
|
}
|
|
|
|
public void setName( String newName ){
|
|
this.name = newName;
|
|
}
|
|
|
|
public static void main(String[] args){
|
|
Person p = new Person();
|
|
p.setName("Brett");
|
|
|
|
if( p.getName() == "Brett" ){
|
|
System.out.println("Name Is Brett");
|
|
} else{
|
|
System.out.println("Name Is Not Brett");
|
|
}
|
|
}
|
|
|
|
}
|
|
\end{lstlisting}
|
|
|
|
\begin{lstlisting}[language=javascript,caption={Example 2 - Node.JS}]
|
|
var Person = function(){}
|
|
Person.prototype.getName = function(){
|
|
return this.name;
|
|
}
|
|
Person.prototype.setName = function( newName ){
|
|
this.name = newName;
|
|
}
|
|
|
|
var p = new Person();
|
|
p.setName("Brett");
|
|
|
|
if( p.getName() == "Brett" ){
|
|
console.log("Name Is Brett");
|
|
} else{
|
|
console.log("Name Is Not Brett");
|
|
}
|
|
\end{lstlisting}
|
|
|
|
\begin{lstlisting}[language=python,caption={Example 2 - Python}]
|
|
class Person:
|
|
def getname( self ):
|
|
return self.name
|
|
def setName( self, newName ):
|
|
self.name = newName
|
|
|
|
p = Person()
|
|
p.setName("Brett");
|
|
|
|
if p.getName() is "Brett":
|
|
print "Name Is Brett"
|
|
else:
|
|
print "Name Is Not Brett"
|
|
\end{lstlisting}
|
|
|
|
This example does a better job of showing how each language can tackle the concepts in a different manner but the core concepts
|
|
laid out by the sudo language can still be extrapolated and translated to each individual programming language; as long as the language supports the concepts.
|
|
You may notice that I left out the implementation of C in this example.
|
|
This is intentionally done because C does not support the use of classes and objects. There are ways of completing this example in C using structs but that
|
|
is something that you should learn on your own.
|
|
\par
|
|
|
|
Hopefully the above examples will give you an understanding of how the rest of the examples in the book will be laid out.
|