Added ex 19,20 functions and pop quiz
parent
a361b90a75
commit
08ec029f20
@ -0,0 +1,28 @@
|
|||||||
|
//
|
||||||
|
// Now let's use a function that takes a parameter.
|
||||||
|
//
|
||||||
|
const std = @import( "std" );
|
||||||
|
|
||||||
|
pub fn main() void {
|
||||||
|
std.debug.print("Powers of two: {} {} {} {}\n", .{
|
||||||
|
twoToThe(1),
|
||||||
|
twoToThe(2),
|
||||||
|
twoToThe(3),
|
||||||
|
twoToThe(4),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Oops! We seem to have forgotten something here. Function
|
||||||
|
// parameters look like this:
|
||||||
|
//
|
||||||
|
// fn myFunction( number: u8, is_lucky: bool ) {
|
||||||
|
// ...
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// As you can see, we declare the type of the parameter, just
|
||||||
|
// like we declare the types of variables, with a colon ":".
|
||||||
|
//
|
||||||
|
fn twoToThe(???) u32 {
|
||||||
|
return std.math.pow(u32, 2, my_number);
|
||||||
|
}
|
@ -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 ???;
|
||||||
|
}
|
Loading…
Reference in New Issue