Browse Source

Added ex 15,16 for loops

Dave Gauer 4 years ago
parent
commit
2bda44bc58
4 changed files with 55 additions and 1 deletions
  1. 24 0
      15_for.zig
  2. 27 0
      16_for2.zig
  3. 1 1
      README.md
  4. 3 0
      ziglings

+ 24 - 0
15_for.zig

@@ -0,0 +1,24 @@
+//
+// Behold the 'for' loop! It lets you execute code for each
+// member of an array (and things called 'slices' which we'll
+// get to in a bit).
+//
+//     for (items) |item| {
+//         // Do something with item
+//     }
+//
+const std = @import("std");
+
+pub fn main() void {
+    const story = [_]u8{ 'h', 'h', 's', 'n', 'h' };
+
+    std.debug.print("A Dramatic Story: ", .{});
+
+    for (???) |???| {
+        if(scene == 'h') std.debug.print(":-)  ", .{});
+        if(scene == 's') std.debug.print(":-(  ", .{});
+        if(scene == 'n') std.debug.print(":-|  ", .{});
+    }
+
+    std.debug.print("The End.\n", .{});
+}

+ 27 - 0
16_for2.zig

@@ -0,0 +1,27 @@
+//
+// For loops also let you store the "index" of the iteration - a
+// number starting with 0 that counts up with each iteration:
+//
+//     for (items) |item, index| {
+//         // Do something with item and index
+//     }
+//
+const std = @import("std");
+
+pub fn main() void {
+    // Let's store the bits of binary number 1101 in
+    // 'little-endian' order (least significant byte first):
+    const bits = [_]u8{ 1, 0, 1, 1 };
+    var value: u32 = 0;
+
+    // Now we'll convert the binary bits to a number value by adding
+    // the value of the place as a power of two for each bit. See if
+    // you can figure out the missing piece:
+    //
+    for (bits) |bit, i| {
+        var place_value = std.math.pow(u32, 2, @intCast(u32, i));
+        value += place_value * bit;
+    }
+
+    std.debug.print("The value of bits '1101': {}.\n", .{value});
+}

+ 1 - 1
README.md

@@ -64,7 +64,7 @@ Planned exercises:
 * [x] Strings
 * [x] If
 * [x] While
-* [ ] For
+* [x] For
 * [ ] Functions
 * [ ] Defer
 * [ ] Errors

+ 3 - 0
ziglings

@@ -83,6 +83,8 @@ check_it 11_while.zig "n=1024" "You probably want a 'less than' condition."
 check_it 12_while2.zig "n=1024" "It might help to look back at the previous exercise."
 check_it 13_while3.zig "1 2 4 7 8 11 13 14 16 17 19"
 check_it 14_while4.zig "n=4"
+check_it 15_for.zig "A Dramatic Story: :-)  :-)  :-(  :-|  :-)  The End."
+check_it 16_for2.zig "13"
 
 echo
 echo "    __   __          _ "
@@ -93,4 +95,5 @@ echo "      |_|\__,_|\__, (_) "
 echo "               |___/ "
 echo
 echo "You've completed all of the Ziglings exercises!"
+echo "       (That have been written so far.)"
 echo