- 01Setting up (what you'll need)
- 02Your first output (NSLog)
- 03Using variables
- 04Branching (the if statement)
- 05Repeating (the for loop)
- 06Writing your own function
- 07Working with arrays
- 08Repeating (the while loop)
- 09Working with classes (object orientation)
- 10Error handling (@try / @catch)
- 11Sorting an array
- 12Recursive functions
- 13The string standard library
- 14The switch statement
- 15The ternary operator
- 16Extending a class with a category
- 17Writing comments
- 18Logical operators (&&, ||, !)
- 19Constants (static const)
- 20Splitting and joining strings
- 21Writing nil-safe code
- 22Searching an array (containsObject:)
- 23Transforming an array (the map equivalent)
- 24Two-dimensional arrays (tabular data)
- 25Custom errors (categorising with NSError)
- 26Writing a variadic function
- 27Handling sets (data without duplicates) with NSSet
- 28Checking correctness (a first step towards testing)
- 29Higher-order functions (passing a block as an argument)
- 30Stacks and queues (the basics of data structures)
- 31The basics of type conversion (casting)
- 32An introduction to regular expressions (pattern matching)
- 33The binary search algorithm
- 34Building a Caesar cipher (a letter-shifting cipher)
- 35Understanding how bubble sort works
- 36Assembling and displaying a date (NSDateComponents)
- 37Writing several tests together (multiple test cases)
- 38Speeding up calculation with memoization (caching)
- 39Normalizing strings (trimming whitespace, unifying case)
- 40Shallow copies versus deep copies
- 41The basics of enums
- 42Flattening an array
- 43Reversing a string and testing for a palindrome
- 44Pairing up two arrays (the zip operation)
- 45Rounding numbers (floor, ceil, round)
- 46Multi-line text (joining adjacent string literals)
- 47Returning several values from a function (NSDictionary)
- 48Finding the GCD and LCM (the Euclidean algorithm)
- 49Formatting numbers (aligning digits and decimal places)
- 50Cleaning up with @try / @catch / @finally
- 51Type-agnostic general functions (the id type)
- 52The basics of reading and writing files
- 53Generating random numbers
- 54Bitwise operations (AND, OR, XOR, shifts)
- 55Receiving command-line arguments
- 56Pausing for a set time ([NSThread sleepForTimeInterval:])
- 57Watch out for floating-point error
- 58Reading a value from standard input
- 59FizzBuzz (the classic exercise)
- 60Testing whether a number is prime
- 61Set operations with NSSet (union, intersection, difference)
- 62Converting between bases (binary and hexadecimal)
- 63Checking that brackets match (an application of stacks)
- 64Testing whether two words are anagrams
- 65Testing whether a year is a leap year
- 66Converting temperatures (Celsius and Fahrenheit)
- 67Finding the prime factors
- 68[Project] Build a simple grade-tallying program
[Project] Build a simple grade-tallying program
This lesson covers building a simple grade-tallying program with arrays in Objective-C, with the aim of combining what you have learned so far into a larger program.
Combine the arrays and loops covered so far into a program that totals several people's scores. Totalling and averaging data held in an array is a basic pattern that turns up constantly in practice.
The sample code stores several people's scores in an NSArray called scores and totals them by adding every element into total with for (NSNumber *score in scores). Note (float)total / scores.count, which calculates the average.
A common early stumble is integer division when calculating the average. Dividing two integers discards everything after the decimal point, so an accurate average needs one side cast to float or double.
Classes, categories, error handling — everything covered in these lessons — carries straight over into real iOS development as core Objective-C skills. Well done.
๐งช This site can't compile or run Objective-C directly, so it checks on the spot whether what you typed matches the reference code (scoring happens entirely in your browser โ nothing is sent anywhere).
