Professional Documents
Culture Documents
Chapter 14: Programming and Data Representation: Answers To Coursebook Questions and Tasks
Chapter 14: Programming and Data Representation: Answers To Coursebook Questions and Tasks
Question 14.01
4 * 3 – 3 ^ 2 = 3
(4 * 3 – 3) ^ 2 = 81
4 * (3 – 3) ^ 2 = 0
4 * (3 – 3 ^ 2) = -24
VB.NE
T
Java
End Module
Java import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner console = new Scanner(System.in);
System.out.print("Enter miles: ");
Task 14.03
INPUT BiggestSoFar
INPUT NextNumber
IF NextNumber > BiggestSoFar
THEN
BiggestSoFar ← NextNumber
ENDIF
INPUT NextNumber
IF NextNumber > BiggestSoFar
THEN
BiggestSoFar ← NextNumber
ENDIF
OUTPUT BiggestSoFar
Sub Main()
Console.Write("Enter first number: ")
BiggestSoFar = Console.ReadLine()
Console.Write("Enter another number: ")
NextNumber = Console.ReadLine()
If NextNumber > BiggestSoFar Then
BiggestSoFar = NextNumber
End If
Console.Write("Enter another number: ")
NextNumber = Console.ReadLine()
If NextNumber > BiggestSoFar Then
BiggestSoFar = NextNumber
End If
Console.WriteLine("biggest number is: " &
BiggestSoFar)
Console.ReadLine()
End Sub
End Module
}
}
Task 14.04
INPUT Number1
INPUT Number2
INPUT Number3
IF Number1 > Number2
THEN
// Number1 is bigger
IF Number1 > Number3
THEN
OUTPUT Number1
ELSE
OUTPUT Number3
ENDIF
ELSE
// Number2 is bigger
IF Number2 > Number3
THEN
OUTPUT Number2
ELSE
OUTPUT Number3
ENDIF
ENDIF
Python Number1 = int(input("Enter first number: "))
Number2 = int(input("Enter second number: "))
Number3 = int(input("Enter third number: "))
if Number1 > Number2:
if Number1 > Number3:
print(Number1)
else:
print(Number3)
elif Number2 > Number3:
print(Number2)
else:
print(Number3)
Sub Main()
Console.Write("Enter first number: ")
Number1 = Console.ReadLine()
Console.Write("Enter second number: ")
Number2 = Console.ReadLine()
Console.Write("Enter third number: ")
Number3 = Console.ReadLine()
If Number1 > Number2 Then
If Number1 > Number3 Then
Console.WriteLine(Number1)
Else
Console.WriteLine(Number3)
End If
ElseIf Number2 > Number3 Then
Console.WriteLine(Number2)
Else
Console.WriteLine(Number3)
End If
Console.ReadLine()
End Sub
End Module
Sub Main()
Console.Write("Enter month number: ")
MonthNumber = Console.ReadLine()
Console.Write("Enter year: ")
Year = Console.ReadLine()
Days = 0
Select Case MonthNumber
Case 1, 3, 5, 7, 8, 10, 12
Days = 31
Case 4, 6, 9, 11
Days = 30
Case 2
Days = 28
If Year Mod 400 = 0 Then
Days = 29
Task 14.06
1 INPUT BiggestSoFar
FOR Counter ← 2 TO 10
INPUT NextNumber
IF NextNumber > BiggestSoFar
THEN
BiggestSoFar ← NextNumber
ENDIF
Sub Main()
Console.Write("Enter first number: ")
BiggestSoFar = Console.ReadLine()
For Counter = 2 To 10
Console.Write("Enter another number: ")
NextNumber = Console.ReadLine()
If NextNumber > BiggestSoFar Then
BiggestSoFar = NextNumber
End If
Next
Console.WriteLine(BiggestSoFar)
Console.ReadLine()
End Sub
End Module
Java import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner console = new Scanner(System.in);
System.out.print("Enter first number: ");
int biggestSoFar = console.nextInt();
for (int counter = 2; counter <= 10; counter++)
{
System.out.print("Enter another number: ");
int nextNumber = console.nextInt();
if (nextNumber > biggestSoFar)
biggestSoFar = nextNumber;
}
System.out.println(biggestSoFar);
}
}
Sub Main()
RunningTotal = 0
For Counter = 1 To 10
Console.Write("Enter a number: ")
NextNumber = Console.ReadLine()
RunningTotal = RunningTotal + NextNumber
Next
Console.WriteLine(RunningTotal)
Average = RunningTotal / 10
Console.WriteLine(Average)
Console.ReadLine()
End Sub
End Module
Java import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner console = new Scanner(System.in);
int runningTotal = 0;
for (int counter = 1; counter <= 10; counter++)
{
System.out.print("Enter a number: ");
int nextNumber = console.nextInt();
runningTotal = runningTotal + nextNumber;
}
System.out.println(runningTotal);
double average = runningTotal / 10.0;
System.out.println(average);
}
}
Sub Main()
Console.Write("Enter number of rows: ")
NumberOfRows = Console.ReadLine()
Console.Write("Enter number of columns: ")
NumberOfColumns = Console.ReadLine()
Console.Write("Enter symbol: ")
Symbol = Console.ReadLine()
For RowCounter = 1 To NumberOfRows
For ColumnCounter = 1 To NumberOfColumns
Console.Write(Symbol)
Next
Console.WriteLine()
Next
Console.ReadLine()
End Sub
End Module
Java import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner console = new Scanner(System.in);
System.out.print("Enter number of rows: ");
int numberOfRows = console.nextInt();
System.out.print("Enter number of columns: ");
int numberOfColumns = console.nextInt();
System.out.print("Enter symbol: ");
String symbol = console.next();
for (int rowCounter = 1; rowCounter <=
numberOfRows; rowCounter++)
{
Task 14.07
1 INPUT BiggestSoFar
Counter ← 0
REPEAT
INPUT NextNumber
Counter ← Counter + 1
IF NextNumber > BiggestSoFar
THEN
BiggestSoFar ← NextNumber
ENDIF
UNTIL Counter = 10
OUTPUT BiggestSoFar
Python BiggestSoFar = int(input("Enter first number: "))
Counter = 0
while Counter < 10:
NextNumber = int(input("Enter another number: "))
Counter = Counter + 1
if NextNumber > BiggestSoFar:
BiggestSoFar = NextNumber
print(BiggestSoFar)
Sub Main()
Console.Write("Enter first number: ")
BiggestSoFar = Console.ReadLine()
Counter = 0
Do
Console.Write("Enter another number: ")
NextNumber = Console.ReadLine()
Counter = Counter + 1
If NextNumber > BiggestSoFar Then
BiggestSoFar = NextNumber
End If
Loop Until Counter = 10
Console.WriteLine(BiggestSoFar)
Console.ReadLine()
End Sub
End Module
2 INPUT BiggestSoFar
REPEAT
INPUT NextNumber
IF NextNumber > BiggestSoFar
THEN
BiggestSoFar ← NextNumber
ENDIF
UNTIL NextNumber = 0
OUTPUT BiggestSoFar
Python NextNumber = int(input("Enter first number: "))
BiggestSoFar = NextNumber
while NextNumber != 0:
NextNumber = int(input("Enter another number: "))
if NextNumber > BiggestSoFar:
BiggestSoFar = NextNumber
print(BiggestSoFar)
Sub Main()
Console.Write("Enter first number: ")
BiggestSoFar = Console.ReadLine()
Do
Console.Write("Enter another number: ")
NextNumber = Console.ReadLine()
If NextNumber > BiggestSoFar Then
BiggestSoFar = NextNumber
End If
Loop Until NextNumber = 0
Console.WriteLine(BiggestSoFar)
Console.ReadLine()
End Sub
Task 14.08
INPUT NextNumber
BiggestSoFar ← NextNumber
WHILE NextNumber <> 0 DO // terminator not encountered
INPUT NextNumber
IF NextNumber > BiggestSoFar
THEN
BiggestSoFar ← NextNumber
ENDIF
ENDWHILE
OUTPUT BiggestSoFar
Python NextNumber = int(input("Enter first number: "))
BiggestSoFar = NextNumber
while NextNumber != 0:
NextNumber = int(input("Enter another number: "))
if NextNumber > BiggestSoFar:
BiggestSoFar = NextNumber
print(BiggestSoFar)
Sub Main()
Console.Write("Enter first number: ")
NextNumber = Console.ReadLine()
BiggestSoFar = NextNumber
Do While NextNumber <> 0
Console.Write("Enter another number: ")
NextNumber = Console.ReadLine()
End Module
Task 14.09
1 Python import random
for Count in range(20):
RandomNumber = random.randint(1,10)
print(RandomNumber)
Sub Main()
For Count = 1 To 20
RandomNumber = Number.Next(1, 11)
Console.WriteLine(RandomNumber)
Next
Console.ReadLine()
End Sub
End Module
2 SecretNumber ← Random
INPUT Guess
NumberOfGuesses ← 1
WHILE Guess <> SecretNumber DO
IF Guess > SecretNumber
THEN
// the player is given the message to input a smaller number
ENDIF
IF Guess < SecretNumber
THEN
// the player is given the message to input a larger number
ENDIF
INPUT Guess
NumberOfGuesses ← NumberOfGuesses + 1
ENDWHILE
OUTPUT NumberOfGuesses
Python import random
SecretNumber = random.randint(1,100)
Guess = int(input("What is your guess? "))
NumberOfGuesses = 1
while Guess != SecretNumber:
if Guess >SecretNumber:
print("Input a smaller number: ", end='')
if Guess <SecretNumber:
print("Input a larger number: ", end='')
Guess = int(input())
NumberOfGuesses = NumberOfGuesses + 1
Sub Main()
End Module
Task 14.10
CALL SetValues
REPEAT
CALL OutputSpaces
CALL OutputSymbols
CALL AdjustValuesForNextRow
UNTIL NumberOfSymbols > MaxNumberOfSymbols
PROCEDURE SetValues
INPUT Symbol
CALL InputMaxNumberOfSymbols // need to ensure it is an odd number
NumberOfSpaces ← (MaxNumberOfSymbols - 1) / 2
PROCEDURE InputMaxNumberOfSymbols
REPEAT
INPUT MaxNumberOfSymbols
UNTIL MaxNumberOfSymbols MOD 2 = 1
ENDPROCEDURE
PROCEDURE OutputSpaces
FOR Count1 ← 1 TO NumberOfSpaces
OUTPUT Space // without moving to next line
NEXT Count1
ENDPROCEDURE
PROCEDURE OutputSymbols
FOR Count2 ← 1 TO NumberOfSymbols
OUTPUT Symbol // without moving to next line
NEXT Count2
OUTPUT Newline // move to the next line
ENDPROCEDURE
PROCEDURE AdjustValuesForNextRow
NumberOfSpaces ← NumberOfSpaces – 1
NumberOfSymbols ← NumberOfSymbols + 2
ENDPROCEDURE
def InitialiseBoard() :
global Board
Board = [[BLANK for Column in range(8)] for Row in
range(7)]
def SetUpGame() :
global GameFinished
global ThisPlayer
global WinnerFound
ThisPlayer = "O" # Player O always starts
GameFinished = False
WinnerFound = False
def OutputBoard() :
for Row in range(6, 0, -1) :
for Column in range (1, 8) :
print(Board[Row][Column], end='')
print() # move to next line
def ColumnNumberValid(ColumnNumber):
Valid = False
if (ColumnNumber >= 1) and (ColumnNumber <= 7):
if Board[6][ColumnNumber] == BLANK :
Valid = True
return Valid
def CheckHorizontalLine() :
global WinnerFound
for i in range(1,5) :
if ((Board[ValidRow][i] == ThisPlayer) and
(Board[ValidRow][i + 1] == ThisPlayer) and
(Board[ValidRow][i + 2] == ThisPlayer) and
(Board[ValidRow][i + 3] == ThisPlayer)) :
WinnerFound = True
def CheckVerticalLine() :
global WinnerFound
if (ValidRow == 4) or (ValidRow == 5) or (ValidRow
== 6):
if ((Board[ValidRow][ValidColumn] ==
ThisPlayer) and
(Board[ValidRow - 1][ValidColumn] ==
ThisPlayer) and
(Board[ValidRow - 2][ValidColumn] ==
ThisPlayer) and
(Board[ValidRow - 3][ValidColumn] ==
ThisPlayer)):
WinnerFound = True
def CheckForFullBoard():
global GameFinished
BlankFound = False
ThisRow = 0
while (ThisRow != 6) and (BlankFound == False):
ThisColumn = 0
ThisRow += 1
while (ThisColumn != 7) and (BlankFound ==
False):
ThisColumn += 1
if Board[ThisRow][ThisColumn] == BLANK:
BlankFound = True
if BlankFound == False:
print("It is a draw")
GameFinished = True
def CheckIfPlayerHasWon():
CheckHorizontalLine()
if WinnerFound == False:
CheckVerticalLine()
def CheckGameFinished():
global GameFinished
def SwapThisPlayer():
global ThisPlayer
if ThisPlayer == "O":
ThisPlayer = "X"
else :
ThisPlayer = "O"
def main():
InitialiseBoard()
SetUpGame()
OutputBoard()
while GameFinished == False:
PlayerMakesMove()
OutputBoard()
CheckGameFinished()
if GameFinished == False:
SwapThisPlayer()
main()
VB.NET Module Module1
Sub InitialiseBoard()
Dim Row, Column As Integer
For Row = 1 To 6
For Column = 1 To 7
Board(Row, Column) = BLANK
Next
Next
End Sub
Sub SetUpGame()
ThisPlayer = "O"
GameFinished = False
End Sub
Sub OutputBoard()
Dim Row, Column As Integer
For Row = 6 To 1 Step -1
For Column = 1 To 7
Console.Write(Board(Row, Column))
Next
Sub PlayerMakesMove()
Console.WriteLine("Player " & ThisPlayer & " 's
turn.")
ValidColumn = PlayerChoosesColumn()
ValidRow = FindFreeRow()
Board(ValidRow, ValidColumn) = ThisPlayer
End Sub
Sub CheckHorizontalLine()
Dim i As Integer
For i = 1 To 4
If (Board(ValidRow, i) = ThisPlayer) And
(Board(ValidRow, i + 1) = ThisPlayer) And
(Board(ValidRow, i + 2) = ThisPlayer) And
(Board(ValidRow, i + 3) = ThisPlayer) Then
WinnerFound = True
End If
Next
End Sub
Sub CheckForFullBoard()
Dim BlankFound As Boolean
Dim ThisRow, ThisColumn As Integer
BlankFound = False
ThisRow = 0
Do
ThisColumn = 0
ThisRow = ThisRow + 1
Do
ThisColumn = ThisColumn + 1
If Board(ThisRow, ThisColumn) = BLANK Then
BlankFound = True
End If
Loop Until (ThisColumn = 7) Or (BlankFound =
True)
Loop Until (ThisRow = 6) Or (BlankFound = True)
If BlankFound = False Then
Console.WriteLine("It is a draw")
GameFinished = True
End If
End Sub
Sub CheckIfPlayerHasWon()
CheckHorizontalLine()
If WinnerFound = False Then
CheckVerticalLine()
End If
End Sub
Sub CheckGameFinished()
CheckIfPlayerHasWon()
If WinnerFound = True Then
GameFinished = True
Console.WriteLine(ThisPlayer & " is the winner")
Else
CheckForFullBoard()
End If
End Sub
Sub main()
InitialiseBoard()
SetUpGame()
OutputBoard()
Do While GameFinished = False
PlayerMakesMove()
OutputBoard()
CheckGameFinished()
If GameFinished = False Then
SwapThisPlayer()
End If
Loop
Console.ReadLine()
End Sub
End Module
Java import java.util.Scanner;
import java.util.Random;
public class Main
{
static Scanner console = new Scanner(System.in);
Global ThisPlayer
GameFinished, WinnerFound
Board
ValidRow, ValidColumn
Note: Python and Java are designed to use local variables by default, so it is more laborious to declare variables
as global.
Task 14.13
1 FOR Index ← 0 TO 6
INPUT MyList[Index]
NEXT Index
Python MyList = []
for Index in range(8):
MyList.append( int(input("Enter a number: ")))
VB.NET Module Module1
Dim MyList(7) As Integer
Dim Index As Integer
Sub Main()
For Index = 0 To 6
Console.Write("Enter a number: ")
MyList(Index) = Console.ReadLine()
Next
Console.ReadLine()
End Module
Java import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner console = new Scanner(System.in);
int [] myList = new int[7];
for (int index = 0; index <= 6; index++)
{
System.out.print("Enter a number: ");
myList[index] = console.nextInt();
}
}
}
2 MaxIndex ← 6
INPUT SearchValue
Found ← FALSE
Index ← –1
REPEAT
Index ← Index + 1
IF MyList[Index]= SearchValue
THEN
Found ← TRUE
ENDIF
UNTIL FOUND = TRUE OR Index >= MaxIndex
IF Found = TRUE
THEN
OUTPUT "Value found at location: " Index
ELSE
OUTPUT "Value not found"
ENDIF
Python MyList = []
for Index in range(7):
MyList.append( int(input("Enter a number: ")))
MaxIndex = 6
SearchValue = int(input("Enter search value: "))
Found = False
Index = –1
while not Found and Index <MaxIndex:
Index = Index + 1
if MyList[Index] == SearchValue:
Found = True
if Found:
print("Value found at location: ", Index+1)
else:
print("Value not found")
VB.NET Module Module1
Dim MyList(6) As Integer
Dim Index, MaxIndex, SearchValue As Integer
Dim Found As Boolean
End Module
Java import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner console = new Scanner(System.in);
int [] myList = new int[7];
3 n ← MaxIndex – 1
REPEAT
NoMoreSwaps ← TRUE
FOR j ← 0 TO n
IF MyList[j] > MyList[j + 1]
THEN
Temp ← MyList[j]
MyList[j] ← MyList[j + 1]
MyList[j + 1] ← Temp
NoMoreSwaps ← FALSE
ENDIF
NEXT j
n ← n – 1
UNTIL NoMoreSwaps = TRUE
Python MyList = []
for Index in range(7):
MyList.append( int(input("Enter a number: ")))
MaxIndex = 6
n = MaxIndex - 1
NoMoreSwaps = False
while NoMoreSwaps == False:
NoMoreSwaps = True
for j in range(n):
if MyList[j] >MyList[j + 1]:
Temp = MyList[j]
MyList[j] = MyList[j + 1]
MyList[j + 1] = Temp
NoMoreSwaps = False
n = n - 1
Sub Main()
For Index = 0 To 6
Console.Write("Enter a number: ")
MyList(Index) = Console.ReadLine()
Next
MaxIndex = 6
n = MaxIndex - 1
Do
NoMoreSwaps = True
For Index = 0 To 6
Console.Write(MyList(Index) &" ")
Next
Console.ReadLine()
End Sub
End Module
Java import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner console = new Scanner(System.in);
int [] myList = new int[7];
for (int index = 0; index <= 6; index++)
{
System.out.print("Enter a number: ");
myList[index] = console.nextInt();
}
int maxIndex = 6;
int n = maxIndex - 1;
boolean noMoreSwaps;
do
{
noMoreSwaps = true;
for (int j = 0; j <= n; j++)
{
if (myList[j] > myList[j+1])
{
int temp = myList[j];
myList[j] = myList[j + 1];
myList[j + 1] = temp;
noMoreSwaps = false;
}
}
n = n - 1;
} while(noMoreSwaps == false);
Task 14.14
1 FOR Row ← 0 TO MaxRowIndex
FOR Column ← 0 TO MaxColumnIndex
ThisTable[Row, Column] ← 0
NEXT Column
NEXT Row
Const MaxRowIndex = 5
Const MaxColumnIndex = 6
Sub Main()
For Row = 0 To MaxRowIndex
For Column = 0 To MaxColumnIndex
ThisTable(Row, Column) = 0
Next
Next
def InitialiseBoard() :
Board = [[BLANK for Column in range(8)] for Row in
range(7)]
return Board
def SetUpGame() :
ThisPlayer = "O" # Player O always starts
GameFinished = False
return ThisPlayer, GameFinished
def OutputBoard(Board) :
for Row in range(6, 0, -1) :
for Column in range (1, 8) :
print(Board[Row][Column], end='')
print() # move to next line
def CheckForFullBoard(Board):
def SwapThisPlayer(ThisPlayer):
if ThisPlayer == "O":
ThisPlayer = "X"
else :
ThisPlayer = "O"
return ThisPlayer
def main():
Board = InitialiseBoard()
ThisPlayer, GameFinished = SetUpGame()
OutputBoard(Board)
while GameFinished == False:
Board, ValidRow, ValidColumn =
PlayerMakesMove(ThisPlayer, Board)
OutputBoard(Board)
GameFinished = CheckGameFinished(Board,
ThisPlayer, ValidRow, ValidColumn)
if GameFinished == False :
ThisPlayer = SwapThisPlayer(ThisPlayer)
Sub OutputBoard(Board)
Dim Row, Column As Integer
For Row = 6 To 1 Step -1
For Column = 1 To 7
Console.Write(Board(Row, Column))
Next
Console.WriteLine()
Next
End Sub
Sub main()
Dim ThisPlayer As Char
Dim GameFinished As Boolean
Dim Board(6, 7) As Char
Dim ValidRow, ValidColumn As Integer
initialiseBoard(board);
char thisPlayer = setUpGame();
outputBoard(board);
while (gameFinished == false)
{
playerMakesMove(thisPlayer, board,
coordinates);
outputBoard(board);
gameFinished = checkGameFinished(board,
thisPlayer, coordinates);
if (gameFinished == false)
thisPlayer = swapThisPlayer(thisPlayer);
}
}
}
Task 14.15
Initialise Tally array
REPEAT
INPUT Choice // 1 for Reading, 2 for computer games,
// 3 for Sport, 4 for Programming, 5 for TV
// 0 to end input
Increment Tally[Choice]
Sub Main()
Dim Tally(5) As Integer
Dim Hobbytitle(5) As String
Dim Choice, Index As Integer
Dim FileHandleOut As IO.StreamWriter
Dim FileHandleIn As IO.StreamReader
Console.ReadLine()
End Sub
End Module
Marking guidance:
1 mark for correct variable declarations
1 mark for OUTPUT statement
1 mark for Correct FOR loop structure
1 mark for correct starting and end values
1 mark for correct assignment to Grams within loop
1 mark correctly outputting Ounces and Grams on same line within loop
1 mark for indicating a new line is required after previous line, but within loop
Marking guidance:
1 mark for correct procedure heading and ending
1 mark for each correct line in the procedure body
Marking guidance:
1 mark for correct function heading and ending
1 mark for declaration
1 mark for correct calculation of remainder
1 mark correct boolean expression
1 mark for returning FALSE when IsDivisible is false
1 mark for returning TRUE when IsDivisible is true
Marking guidance:
1 mark for correct procedure identifier and procedure ending
1 mark for each correct parameter
1 mark for correct method of parameter passing (BYREF)
1 mark for NumberOfEggs MOD 6
1 mark for assigning the above result to EggsLeftOver
1 mark for NumberOfEggs DIV 6
1 mark for assigning the above result to NumberOfBoxes
Marking guidance:
1 mark for correct function heading and ending
1 mark for length check
1 mark for checking first 2 characters are upper case letters
1 mark for checking third character for letter or digit
1 mark for checking for two digits
1 mark for checking final characters are upper case letters
1 mark for returning correct Boolean value in all cases