Download presentation
Presentation is loading. Please wait.
Published byFranklin Doyle Modified over 9 years ago
1
Library Functions... 1.Old functions 2.Vocabulary 3.Rounding numbers 4.Generating random numbers 5.mod() 6.Properties of mod() 7.Ex1: even or odd? 8.Ex2: error when not a whole number 1
2
1. Remember these functions? clc clear sin(), sind() … sqrt(), abs() … input(), fprintf(), disp() 2
3
2. Official vocabulary variable = functions_name( argument list ); Example: hypotenuse = sqrt(a^2+b^2); 3 1. This is a “function call”. MATLAB “calls upon the execution” of the code behind the keyword. 3. MATLAB “collects” the “return-value” inside this variable. 2. MATLAB is “passing” inputs to the function. 1. MATLAB “calls upon the execution” of sqrt() 2. MATLAB “passes” the result of a^2+b^2” 3. MATLAB “collects” the “return-value”
4
Various uses While the function’s name is ALWAYS needed, the call may/may not require either one of the other 2 parts. variable = functions_name( arguments); For example… clc and clear require neither fprintf() requires at least 1 argument (the format string), but typically we do not collect the result. 4
5
Arguments? Collecting return values? 1 or many arguments: – Some functions are versatile in how many arguments they need – When there is a list of arguments, separate each with a comma:, 1 argument: a string age = input(‘Enter your age: ’); 2 arguments: both strings username = input(‘Username: ’, ‘s’); 3 arguments: 1 string and 2 variables fprintf(‘Hello %s! You are %d years old!\n’,… username, age); 5
6
Rounding functions Rounding floats to integer *w.r.t = with respect to 6 FunctionDefinitionsExamples 2.45312.56-6.67 round() Rounds *w.r.t 0.5__?__13-7 ceil() Rounds towards +infinity3__?__-6 floor() Rounds towards -infinity212__?__ + - NEW
7
Examples 7 How many bags of concrete mix are needed to build stairs? Step1: -Givens needed: -Dimensions of one step -How many stairs -How much concrete does one bag of concrete mix make? -Find: -Number of bags needed Civil Eng.
8
Examples 8 depth width height Civil Eng. Step2
9
Examples 9 How many bags of concrete are needed to build stairs? Step5: Assuming 6 stairs: 3ft wide, 6in tall, 11in deep totVolume(ft3) = Nb_stairs * width * depth * thick = 6 * 3* 6/12 * 11/12 = 8.25 ft^3 Number of bags = totVolume(ft3)/ volume1bag = 8.25/0.66 = 12.38 There is a need for ______ bags. Civil Eng.
10
Try 10 This Convert 5632seconds to a format hrs:min:sec! 5632 secd = 1.56444444 hours 3600 (secd/hr) Round down: 1 full hour 5623 sec – 1* 3600 sec = 2023 seconds 2023 secd = 33.71666 minutes 60(secd/min) Round down: 33 full minutes Tonight!
11
Example2 11 Hrs/Min/Sec 2023 – 33*60 = 43 seconds Conclusion: 5632seconds is also: 01:33:43 The function used to round down is: ________ Best practice: code this mini-example tonight. Allow the user to enter the initial number of seconds.
12
4. Generating Random Numbers Generating random numbers rand() is another one of those versatile functions x=rand; x=rand(); %some keep the () to remind themselves it is a function-call vs. a variable name. x=rand(1); %avoid, it’s overdoing it… x=rand(2); %a 2-rows by 2-columns matrix x=rand(2,5); %a 2-rows by 5-columns matrix 12 rand Generates one float between 0 and 1 both excluded. rand(n) Generates a matrix with n^2 floats between 0 and 1 both excluded. (used in 2 weeks from now) rand(n,m) Generates an n-row by m-column matrix with floats between 0 and 1 both excluded. (used in 2 weeks from now)
13
rand() and a little bit of algebra: +- What happens to a number k between 0 and 1 if it is added to another number? For example: What can we say about:2+k ? What can we say about:k-4 ? >> The interval shifts left/right. 13 0 1 k 2 3 k 0 1
14
rand() and a little bit of algebra: */ What happens to a number k between 0 and 1 if it is multiplied by another number? For example: What can we say about:5*k ? What can we say about:k/2 ? >> The interval grows/shrinks. 14 0 1 k 0 5 k
15
rand() and a little bit of algebra What is the range of values K lies within? K = rand*6; K = rand*45-6; K = 2+rand*3.3; K = -6.5+rand/2; K = (rand*3)/2-2; 15 ? ? K
16
End of algebra So.. Using a combination of arithmetic operators, how would you generate these values (both excluded): k1 = rand_______________________; k2 = rand_______________________; 16 15 20 k1 -5.5 5.5 k2
17
Conclusion To generate 1 float in the interval: ]a,b[ k = rand*(b-a)+a; This is not a formula worth remembering.. Just remember algebra! 17
18
What about generating whole numbers? If rand generates one float, how do we generate random numbers? – like dice values: 1-6? (included of course) %roll the die die = ____________; %check if winner if die == 6 fprintf(‘you won!\n’); end 18
19
Why not round? What happens with we do this: round(6*rand) 19 06 () 0.51.52.53.54.55.5 0123456
20
Useless combinations Realize you’re wasting characters… – ceil(rand) will always generate the value ________. (try it) – floor(rand) will always generate the value ________. (try it) “ceil(rand)” is 10 characters…. “floor(rand)” is 11 characters… WHY BOTHER???? 20
21
Example1 21 Thermometer A new thermometer is being built. In addition to showing the temperature, the manufacturer also wants to indicate a warning if the temperature is above or equal to 104 degrees Fahrenheit. You are being paid ($$$) to develop the program that will eventually be within the thermometer. It’s been a year, and still no thermometer.. How long are you going to wait???
22
Example2 22 Rockets0/1’s? How about rockets??? How does software get written? Do we waste a rocket each time? During launch, so many sensors give back information!!! A couple of them are…. -Doors locked? True/False -Oxygen flowing properly? True/False -Fuel being delivered to engine? True/False
23
1. Modulus The modulus-function calculates the remainder of a long division >> doc mod 23
24
1. Modulus The modulus-function calculates the remainder of a long division >> doc mod For example: 24 >>result = 77/3 result = 25.6667 >>result = mod(77,3) result = 2 >> 7 2 5 3 -6 1 7 -1 5 2
25
1. Modulus The modulus-function calculates the remainder of a long division >> doc mod For example: 25 >>result = 77/3 result = 25.6667 >>result = mod(77,3) result = 2 >> mod(..) is a function that REQUIRES TWO ARGUMENTS. ( mod(77) is an invalid statement…)
26
1. Modulus The modulus-function calculates the remainder of a long division >> doc mod For example: 26 >>result = 77/3 result = 25.6667 >>result = mod(77,3) result = 2 >> 7 2 5 3 -6 1 7 -1 5 2 How is this ever useful…?
27
2. Properties of mod() If x is evenly divisible by y (i.e no left-overs), mod(x,y) will return 0 “mod” any number with another one “N”, the return-value will be a whole number from 0 to N-1. For example: 27 Mod by 2 mod(2,2)0 mod(3,2)1 mod(4,2)0 mod(5,2)1 mod(6,2)0 mod(15,2)? Mod by 3 mod(3,3)0 mod(4,3)1 mod(5,3)2 mod(6,3)0 mod(7,3)1 mod(26,3)? Mod by 5 mod(2,5)0 mod(5,5)0 mod(6,5)1 mod(7,5)2 mod(8,5)3 mod(9,5)4 mod(10,5)?
28
2. Properties of mod() If x is evenly divisible by y (i.e no left-overs), mod(x,y) will return 0 “mod” any number with another one “N”, the return-value will be a whole number from 0 to N-1. For example: 28 Mod by 2 mod(2,2)0 mod(3,2)1 mod(4,2)0 mod(5,2)1 mod(6,2)0 mod(15,2)? Mod by 3 mod(3,3)0 mod(4,3)1 mod(5,3)2 mod(6,3)0 mod(7,3)1 mod(26,3)? Mod by 5 mod(2,5)0 mod(5,5)0 mod(6,5)1 mod(7,5)2 mod(8,5)3 mod(9,5)4 mod(10,5)?
29
2. Properties of mod() If x is evenly divisible by y (i.e no left-overs), mod(x,y) will return 0 “mod” any number with another one “N”, the return-value will be a whole number from 0 to N-1. For example: 29 Mod by 2 mod(2,2)0 mod(3,2)1 mod(4,2)0 mod(5,2)1 mod(6,2)0 mod(15,2)? Mod by 3 mod(3,3)0 mod(4,3)1 mod(5,3)2 mod(6,3)0 mod(7,3)1 mod(26,3)? Mod by 5 mod(2,5)2 mod(5,5)0 mod(6,5)1 mod(7,5)2 mod(8,5)3 mod(9,5)4 mod(10,5)?
30
Ex1. Even or Odd? Prompt the user for a whole number, then display whether that number is even or odd. Algorithm is rather straightforward! % prompt the user for whole number % if number is odd % Display ‘odd’ % elseif number is even % Display ‘even’ % else %error message 30
31
Ex1. Even or Odd? Prompt the user for a whole number, then display whether that number is even or odd. Algorithm is rather straightforward! % prompt the user for whole number % if number is odd % Display ‘odd’ % elseif number is even % Display ‘even’ % else %error message 31 But how? What does it mean for a number to be odd?
32
Ex1. Even or Odd? A number x is odd if the remainder of the division by 2 is equal to 1. – Translate to coding: “If the remainder of the division by 2 is equal to 1.” if mod(x,2) == 1 32
33
Ex1. Even or Odd? A number x is odd if the remainder of the division by 2 is equal to 1. – Translate to coding: “If the remainder of the division by 2 is equal to 1.” if mod(x,2) == 1 A number x is odd if the remainder of the division by 2 is not equal to 0. – Translate to coding: “If the remainder of the division by 2 is not equal to 0.” if mod(x,2) ~= 0 33 Think about “even” on your own..
34
Ex1. Even or Odd? % prompt the user for whole number nb = input(‘Enter a WHOLE number: ’); %if number is odd if mod(nb,2) == 1 fprintf(‘%d is odd\n’, nb) elseif mod(nb,2) == 0 %nb is even fprintf(‘%d is even\n’,nb) else disp(‘Number is invalid’) end 34 When would this happen?
35
Ex1. Even or odd? – issues? The remainder of a division of a float value will never give a 0 or a 1!! The number is neither even, nor odd. 35
36
Ex1. Even or odd? – issues? The remainder of a division of a float value will never give a 0 or a 1!! The number is neither even, nor odd. Ironically, mod() can be used to fix this issue!!! 36 Let’s apply this to a previous problem that was solved…
37
Ex2: Check for integers Remember “Who Should Start?” % prompt how many players total totalPlayers = input('How many players (WHOLE number only): '); % generate the one who starts (0-max) startPlayer = ceil(rand*totalPlayers); % continue with game… fprintf('Player #%d will start.\n', startPlayer); Since there are no error-check, the following can happen! 37 Let’s add an error message when an float is entered!...
38
Check for integers, algorithm %prompt user for total players %if invalid (negative, zero, or not integer) %error message %else %generate 1 st player %continue with game 38
39
Check for integers, code %prompt user for total players totalPlayers = input('How many players (WHOLE number only): '); %if invalid (negative, zero, or not integer) if totalPlayers<=0 || ???? %error message disp(‘error. Enter a positive WHOLE number only!’); else %input was valid, proceed with code %generate 1 st player startPlayer = ceil(rand*totalPlayers); %continue with game… end 39 Using mod() in your answer, what does it mean for a number to not-be-an-integer?
40
Check for integers, mod() %prompt user for total players totalPlayers = input('How many players (WHOLE number only): '); %if invalid (negative, zero, or not integer) if totalPlayers<=0 || mod(totalPlayers,1)~=0 %error message disp(‘error. Enter a positive WHOLE number only!’); else %generate 1 st player startPlayer = ceil(rand*totalPlayers); %continue with game… end 40
41
Key Ideas Vocabulary – Function call – Arguments – Collecting – Return-values – Versatile New notions – Rounding up/down/ or w.r.t 0.5 – Generating random numbers – Generating 1 random float value Manipulating it to desire random range wanted – Generating a zero/one to simulate false/true Examples – Cement for stairs: ceil() – Time formatting:floor() – Temperature:rand() – Rocket:all of the above!! 41
42
Key Ideas mod() is a built-in function that calculates the remainder of a division >> doc mod to see help window Commonly used to check if a number is divisible by another. – In other word, mod can be used to check if a number is a multiple of another. mod(.., 2) is used to check even/odd mod(.., 1) is used to check whole/decimal number mod(.., N) is used to check if a number is divisible by N 42
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.