aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Gauer <dave@ratfactor.com>2021-01-03 18:55:45 -0500
committerDave Gauer <dave@ratfactor.com>2021-01-03 18:55:45 -0500
commitb3f74d9c30b7adc6d5cc971b50b8b8a512fe3448 (patch)
tree224c8604de622b0f1c1e59533c5ca838206a0784
parentd618414c9cd144e3d63f2b12df7b512b98df041c (diff)
downloadziglings-b3f74d9c30b7adc6d5cc971b50b8b8a512fe3448.tar.gz
ziglings-b3f74d9c30b7adc6d5cc971b50b8b8a512fe3448.tar.bz2
ziglings-b3f74d9c30b7adc6d5cc971b50b8b8a512fe3448.tar.xz
ziglings-b3f74d9c30b7adc6d5cc971b50b8b8a512fe3448.zip
Add exercise 3, exercise num param for script
-rw-r--r--03_assignment.zig30
-rw-r--r--README.md2
-rwxr-xr-xziglings13
3 files changed, 44 insertions, 1 deletions
diff --git a/03_assignment.zig b/03_assignment.zig
new file mode 100644
index 0000000..6280833
--- /dev/null
+++ b/03_assignment.zig
@@ -0,0 +1,30 @@
+//
+// Oh dear! It seems we got a little carried away making const u8 values.
+// * const means constant (cannot be changed)
+// * u8 means unsigned (cannot be negative), 8-bit integer
+//
+// Hint 1: Use 'var' for values that can change.
+// Hint 2: Use enough bits to hold the value you want:
+// u8 255
+// u16 65,535
+// u32 4,294,967,295
+// Hint 3: Use 'i' (e.g. 'i8', 'i16') for signed integers.
+//
+const std = @import("std");
+
+pub fn main() void {
+ const n: u8 = 50;
+ n = n + 5;
+
+ const pi: u8 = 314159;
+
+ const negative_eleven: u8 = -11;
+
+ // There are no errors in the next line, just explanation:
+ // Perhaps you noticed before that the print function takes two
+ // parameters. Now it will make more sense: the first parameter
+ // is a string. The string may contain placeholders '{}', and the
+ // second parameter is an anonymous struct (data structure)
+ // with values to be printed in place of the placeholders.
+ std.debug.print("{} {} {}\n", .{n, pi, negative_eleven});
+}
diff --git a/README.md b/README.md
index 1bb905d..570cf85 100644
--- a/README.md
+++ b/README.md
@@ -59,7 +59,7 @@ Planned exercises:
* [x] Hello world (main needs to be public)
* [x] Importing standard library
-* [ ] Assignment
+* [x] Assignment
* [ ] Arrays
* [ ] If
* [ ] While
diff --git a/ziglings b/ziglings
index 70cb9b5..395d50d 100755
--- a/ziglings
+++ b/ziglings
@@ -1,5 +1,8 @@
#!/bin/bash
+# ziglings takes one parameter: the exercise number to jump to
+jump_to=${1:-0}
+
echo
echo " _ _ _ "
echo " ___(_) __ _| (_)_ __ __ _ ___ "
@@ -14,11 +17,20 @@ fmt_err=$( tput setaf 1 ) # red foreground
fmt_yay=$( tput setaf 2 ) # green foreground
fmt_off=$( tput sgr0 ) # reset colors/effects
+exercise_num=0
+
function check_it {
source_file=$1
correct_output=$2
hint=$3
+ # If the current exercise is less than the requested one, skip it
+ let exercise_num+=1
+ if [[ $exercise_num -lt $jump_to ]]
+ then
+ return
+ fi
+
# Compile/run the source and capture the result and exit value
cmd="zig run $source_file"
echo "$ $cmd"
@@ -55,6 +67,7 @@ function check_it {
check_it 01_hello.zig "Hello world" "Note the error: the source file has a hint for fixing 'main'."
check_it 02_std.zig "Standard Library"
+check_it 03_assignment.zig "55 314159 -11"
echo
echo " __ __ _ "