# 14 - Final Test

1. An algorithm is essentially the exact same thing as binary code. The terms are used interchangeably.

TRUE

FALSE

2. What is the name of this searching algorithm?
```array people
people = [“Imogen”, “Fletcher”, “Kirstie”, “Zoe”, “Gavin”]
found = False
x = 0
searchfor = input(“enter a name to search for : “)
while found = False AND x <5
if people[x] = searchfor then	        found = True
print “found at position” + x
x = x + 1
endif
Endwhile```

linear search

insertion search

bubble search

binary search

3. A binary search compares each value in turn starting at the first element.

FALSE

TRUE

4. A car dealer uses the following algorithm to determine the price to charge for cars. What is the output if p = 1000 i=2 and a = 12?
```01 p = input(“purchase price of car”		02 i = input(“number of improvements made”)
03 a = input(“age of car in years”)
04 s = p + (i*100)
05 if a <= 10 then
06     s = s + s
07 endif
08 print  “sale price is “ + s```

16000

None of the above

1200

10600

5. A car dealer uses the following algorithm to determine the price to charge for cars. What is the output if p = 5000, i = 3, a = 10
```2 p = input(“purchase price of car”		02 i = input(“number of improvements made”)
03 a = input(“age of car in years”)
04 s = p + (i*100)
05 if a <= 10 then
06     s = s + s
07 endif
08 print  “sale price is “ + s```

1200

16000

None of the above

10600

6. A car dealer uses the following algorithm to determine the price to charge for cars. What is the output if p = 8000, i = 0, a = 5
```3 p = input(“purchase price of car”		02 i = input(“number of improvements made”)
03 a = input(“age of car in years”)
04 s = p + (i*100)
05 if a <= 10 then
06     s = s + s
07 endif
08 print  “sale price is “ + s```

24000

None of the above

10600

1200

7. Algorithms are a great way of automating computer decisions. However, automating processes can lead to errors.
```For example, the Amazon website uses algorithms to decide the price of products.
In 2011, the price of a book called 'The Making of a Fly' (about the molecular
biology of a fly) jumped to £14 million
as the pricing algorithms used by Amazon to set and update prices started outbidding
each other. This raised the book price.```

TRUE

FALSE

8. Complete the first two lines of the trace table for this algorithm.
```Complete the trace table for the following algorithm.
Test it with a user input of 5.

1.	number <--USERINPUT
2.	FOR i <--- 1 TO 10
3.	    OUTPUT (number * i)

number	i	OUTPUT
======================
5	1	5
?       ?
?       ?```

2, 20 …..3, 30

2,10 ….. 3,15

None of the above

1,10……..2, 20

9. The programmer wants a variable inside a function to be treated as 'global' and the following code achieves this.
```def func1():
global some_global #use global keyword
my_global = 20```

FALSE

TRUE

10. The following statement will evaluate to ……
`(10 >= 1) and (1 < 2)`

TRUE

FALSE

11. The following statement will evaluate to …..
`>>> (1>2) and (9>=1)`

FALSE

TRUE

12. In the following algorithm, the elif has _____ conditional tests.
```limbs = 4
if limbs == 4:
print('no one shall pass')
elif limbs > 0 <4:
print('tis but a scratch')
else:```

1

3

2

4

13. What is the output of the following code?
```n = 0
for num in range(5):
n = n + num
print (n)```

10

15

20

5

14. Which of the following statements is correct, in reference to the following code?
```while answer!=”computer”
endwhile
do

The while loop will keep looping while its condition is True.

The while loop will stop if the condition is True

The while loop will end if the answer is = "open123"

None of the above

15. Merge sort is known as a recursive algorithm. What is a recursive function?

There is no such thing

A recursive algorithm is an algorithm which calls itself with "smaller (or simpler)" input values, and which obtains the result

None of the above

A recursive algorithm is just an algorithm which uses a loop

16. Can you spot the place in the code for merge sort where recursion is taking place (a function calling itself)
```def mergeSort(alist):

print("Splitting ",alist)

if len(alist)>1:
mid = len(alist)//2
lefthalf = alist[:mid]
righthalf = alist[mid:]

#recursion
mergeSort(lefthalf)
mergeSort(righthalf)

i=0
j=0
k=0

while i < len(lefthalf) and j < len(righthalf):
if lefthalf[i] < righthalf[j]:
alist[k]=lefthalf[i]
i=i+1
else:
alist[k]=righthalf[j]
j=j+1
k=k+1

while i < len(lefthalf):
alist[k]=lefthalf[i]
i=i+1```

There is no recursion in this program - there's no such thing!

Line 9 and 10

Line 15 and 16

Line 11 and 12

17. Linear search runs in at worst linear time and makes at most n comparisons, where n is ….

the letter 'n'

the number of the first element

the number of the second element

the length of the list

18. Analyse the code below - what is the search criteria here?
```#demonstration of linear search

def linearsearch(x,mylist):
found=False

for i in range(len(mylist)):
if x==mylist[i]:
found=True
break
else:
if x not in mylist:
break

if found==False:
else:
print("Found in position",i)

mylist=[1,2,3,4,5]
x=int(input("Enter a number:"))
linearsearch(x,mylist)

```

found' is the input and is the search criteria

x' is input by the user and is the search criteria

mylist' is the search criteria in the coded example

int' is the search criteria

19. In a linear search, each element of the list is checked sequentially (one after the other) starting …

at the beginning of the list

at a random point in the list

at the end of the list

in the middle of the list

20. At each step of the algorithm an element is moved from the ..

unsorted portion into the unsorted portion

sorted portion into the unsorted portion until the list is unsorted

None of the above

unsorted portion into the sorted portion until the whole list is sorted

21. Typically, the sorted numbers go to the _____of the unsorted numbers.

left

infront

right

behind

22. In the following list what is '23'?
`23,42,4,16,8,15`

The start and end of our sorted portion

The start and end of our unsorted portion

None of the above

The end point of our unsorted portion

23. 42 is the first element in the unsorted portion and we proceed in the algorithm to …..
`23,42,4,16,8,15`

compare the 42 to the 15

compare the 42 to the 4

compare the 42 to the 23 (23 being the only element in our sorted element)

None of the above

24. If 42 is larger than 23, we can…..
`23,42,4,16,8,15`

include 42 before the 23 (e.g. 42,23 / etc)

None of the above

append 42 to the end of the 'sorted' list. (e.g. 23, 42 / 4,16,8,15

remove 42 and take it to the end of the list as it is largest (e.g. 23,4,16,8,15,42)

25. What are the correct intermediate steps of the following data set when it is being sorted with the bubble sort? 15,20,10,18

15,10,20,18 -- 15,10,18,20 -- 10,15,18,20

All of the above are valid options

10, 20,15,18 -- 10,15,20,18 -- 10,15,18,20

15,18,10,20 -- 10,18,15,20 -- 10,15,18,20 -- 10,15,18,20

26. It is possible to code a bubble sort with two 'for loops' nested in each other

FALSE

TRUE

27. What is the maximum number of comparisons if there are 5 elements in array x?

2

10

5

6

28. What is the max. number of comparisons that can take place when a bubble sort is implemented? Assume there are n elements in the array?

(1/4)n(n-1)

None of the above

(1/2)(n-1)

(1/2)n(n-1)

29. In the following code, what is the line for i in range(n) doing?
```def bubbleSort(arr):
n = len(arr)

for i in range(n):

# Last i elements are already in place
for j in range(0, n-i-1):

# traverse the array from 0 to n-i-1
# Swap if the element found is greater
# than the next element
if arr[j] > arr[j+1] :
arr[j], arr[j+1] = arr[j+1], arr[j]```

It is performing the swap FOR every element that is smaller than the first element

None of the above

It is performing the swap FOR every element that is greater

It is looping/traversing through all the elements in the array (or list)

30. Can you analyse the flow chart and describe what it does? Inputs the variables x and 0, until x =50 and 0 is no longer necessary

None of the above

Inputs the numbers 1 and 0 and then keeps repeating this until we have 50 1s and 0s

Inputs 50 numbers and calculates the sum of these numbers

31. What flow chart symbol is executed if the email ID and password are NOT correct? Display Account

Go back to 'Start'

End Program (Crash)

32. Analyse the following flow chart and predict what it does. None of the above

The flow chart is set up wrong as the count starts at 0 - so nothing will be printed

Print "Hello World" 10 times

Prints "Hello World" just one time

33. In the following algorithm, how many INPUT/OUTPUT boxes (parallelograms) would be in use?
```Enter www.facebook.com in your browser.
Is Email ID and Password Valid
if NO then
go to step 3
else
Stop```

3

1

4

2

34. The following algorithm is supposed to print out the times table of the number entered but there is an error. What is it?
```input b
x = 1
while x <=10
print b * x
endwhile```

The value of x should start at 10 in order for the stopping condition to work

while x <=10 should be changed to while x <=0, as otherwise the loop will not run

There is no error - this code will work fine

There is no incrementation (x = x+1) needs to go after print b*x

35. For the following algorithm, if the user enters '3', what will happen?
```input age
for x = 1 to age
print “happy birthday”
next x ```

It will print the message "happy birthday" three times

None of the above

It will cause an error because x = 1, this needs to be changed to x = age

It will print the message "happy birthday" infinite number of times until it crashes