|
@@ -0,0 +1,45 @@
|
|
|
+//
|
|
|
+// Let's see if we can make use of some of things we've learned so far.
|
|
|
+// We'll create two functions: one that contains a "for" loop and one
|
|
|
+// that contains a "while" loop.
|
|
|
+//
|
|
|
+// Both of these are simply labeled "loop" below.
|
|
|
+//
|
|
|
+const std = @import( "std" );
|
|
|
+
|
|
|
+pub fn main() void {
|
|
|
+ const my_numbers = [4]u16{ 5,6,7,8 };
|
|
|
+
|
|
|
+ printPowersOfTwo(my_numbers);
|
|
|
+ std.debug.print("\n", .{});
|
|
|
+}
|
|
|
+
|
|
|
+//
|
|
|
+// You won't see this every day: a function that takes an array with
|
|
|
+// exactly four u16 numbers. This is not how you would normally pass
|
|
|
+// an array to a function. We'll learn about slices and pointers in
|
|
|
+// a little while. For now, we're using what we know.
|
|
|
+//
|
|
|
+// This function prints, but does not return anything.
|
|
|
+//
|
|
|
+fn printPowersOfTwo(numbers: [4]u16) ??? {
|
|
|
+ loop (numbers) |n| {
|
|
|
+ std.debug.print("{} ", .{twoToThe(n)});
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+//
|
|
|
+// This function bears a striking resemblance to twoToThe() in the last
|
|
|
+// exercise. But don't be fooled! This one does the math without the aid
|
|
|
+// of the standard library!
|
|
|
+//
|
|
|
+fn twoToThe(number: u16) ??? {
|
|
|
+ var n: u16 = 0;
|
|
|
+ var total: u16 = 1;
|
|
|
+
|
|
|
+ loop (n < number) : (n += 1) {
|
|
|
+ total *= 2;
|
|
|
+ }
|
|
|
+
|
|
|
+ return ???;
|
|
|
+}
|