You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
264 lines
5.3 KiB
Markdown
264 lines
5.3 KiB
Markdown
# Conditionals
|
|
|
|

|
|
|
|
---
|
|
|
|
# Overview
|
|
|
|
Conditionals
|
|
|
|
if and else
|
|
|
|
Logical Operators
|
|
|
|
# Conditionals
|
|
|
|
Less than: a < b
|
|
|
|
Less than or equal to: a <= b
|
|
|
|
Greater than: a > b
|
|
|
|
Greater than or equal to: a >= b
|
|
|
|
Equal to a == b
|
|
|
|
Not Equal to: a != b
|
|
|
|
Conditionals return true or false, meaning the result can even be allocated into a variable if needed
|
|
|
|
bool areEqual = (a == b);
|
|
|
|
# if , else and else if statements
|
|
|
|
double temperatureInOulu = 2.3;
|
|
|
|
double temperatureInIvalo = -10.9;
|
|
|
|
if (temperatureInOulu > temperatureInIvalo)
|
|
|
|
{
|
|
|
|
Console.WriteLine("Oulu is warmer than Ivalo");
|
|
|
|
}
|
|
|
|
else if (temperatureInOulu < temperatureInIvalo)
|
|
|
|
{
|
|
|
|
Console.WriteLine("Ivalo is warmer than Oulu");
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
Console.WriteLine
|
|
|
|
("Oulu and Ivalo have the same temperature");
|
|
|
|
}
|
|
|
|
__if __ statements are executed in order
|
|
|
|
The first statement with a __true __ condition is executed
|
|
|
|
If no statement holds a true value, __else __ is executed
|
|
|
|
This outputs "Oulu is warmer than Ivalo"
|
|
|
|
# ! -Operator
|
|
|
|
Console.WriteLine(!true); // Outputs false
|
|
|
|
bool itsColdOutside = true;
|
|
|
|
if(!itsColdOutside)
|
|
|
|
{
|
|
|
|
Console.WriteLine("It's warm outside.");
|
|
|
|
}
|
|
|
|
The ! -operator flips the boolean value __ __
|
|
|
|
# The switch statement
|
|
|
|
The __switch __ statement compares the parameter value (here: the __path __ variable) with the value of each __case__
|
|
|
|
Only the matching code is executed
|
|
|
|
If no match is found, the default code block is executed
|
|
|
|
This outputs "Here's the catalogue!"
|
|
|
|
break ends the case and exits the switch: the code will not compile if omitted
|
|
|
|
string path = "/browse";
|
|
|
|
switch (path)
|
|
|
|
{
|
|
|
|
case "/browse":
|
|
|
|
Console.WriteLine("Here's the catalogue!");
|
|
|
|
break;
|
|
|
|
case "/contact":
|
|
|
|
Console.WriteLine("Here's our contact info.");
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
Console.WriteLine("No such path!");
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
# Scope of Variables
|
|
|
|
Variables declared inside of blocks are called __local variables__ ; they are only accessible inside of that block.
|
|
|
|
int a = 0;
|
|
|
|
if(a < 10)
|
|
|
|
{
|
|
|
|
// Variable 'b' is only accessible inside of this if block
|
|
|
|
int b = 1;
|
|
|
|
b = 2; // This works
|
|
|
|
}
|
|
|
|
b = 3; // This throws an error
|
|
|
|
# Assignment Operators
|
|
|
|
We have used the assignment operator ' __='__ for assigning values for variables:
|
|
|
|
int x;
|
|
|
|
x = 25;
|
|
|
|
__Notice __ the difference between '=' and the conditional '=='!
|
|
|
|
'=' is used for assigning values for variables, '== is used for comparing values
|
|
|
|
# Logical Operators
|
|
|
|
'&&', '||' and '!' mean the logical AND, OR and NOT operators
|
|
|
|
For example,
|
|
|
|
int a = 1;
|
|
|
|
int b = 3;
|
|
|
|
int c = 5;
|
|
|
|
Console.WriteLine(a < b && a < c);
|
|
|
|
outputs "True"
|
|
|
|
| Operator | Name | Example | Description |
|
|
| :-: | :-: | :-: | :-: |
|
|
| && | AND | a && b | Returns true if __both__ variables are true.b is not evaluated if a == false. |
|
|
| || | OR | a || b | Returns true if __one or both__ variables are true. b is not evaluated if a == true. |
|
|
| ! | NOT | !a | __Negates__ boolean value (true becomes false and vice versa) |
|
|
| ^ | XOR | a ^ b | Exclusive OR: returns true if __only __ a == true __OR only__ b == true. |
|
|
| & | Logical AND | a & b | Returns true if __both__ variables are true. Both variables are always evaluated. |
|
|
| | | Logical OR | a | b | Returns true if __one or both__ variables are true.Both variables are always evaluated. |
|
|
|
|
---
|
|
|
|
Tässä on kaikki aritmeettiset operaattorit
|
|
|
|
# Operators - Example
|
|
|
|
This outputs "Strong password!"
|
|
|
|
int uppercaseLetters = 2;
|
|
|
|
uppercaseLetters += 4; // is now 6
|
|
|
|
int specialCharacters = 2;
|
|
|
|
specialCharacters *= 2; // is now 4
|
|
|
|
if (uppercaseLetters >= 6 && specialCharacters >= 2)
|
|
|
|
{
|
|
|
|
Console.WriteLine("Strong password!");
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
Console.WriteLine("Weak-ass password...");
|
|
|
|
}
|
|
|
|
# Exercise 1:
|
|
|
|
Create a console application which asks the user which weekday it is and assigns the answer to a string variable.
|
|
|
|
Using a switch-case, calculate the days remaining until next Monday.
|
|
|
|
If the result is more than 3, print "Have a nice week!". Otherwise, print "Have a nice weekend!".
|
|
|
|
# Exercise 2:
|
|
|
|
Create a console application which lets the user input a note.
|
|
|
|
If the length of the note is less than 30, the program prints the current time and the note, separated with a tab. Otherwise, the date and the note are printed to a separate line.
|
|
|
|
Tip: Use DateTime.Now.ToString() for current time. Use .Length after your message variable to get the length of the message.
|
|
|
|
# One More Thing...
|
|
|
|
If a code block following a statement only has one line of code, you can write the code without using curly brackets:
|
|
|
|
int baa = 49;
|
|
|
|
if (baa > 20)
|
|
|
|
Console.WriteLine("Baa");
|
|
|
|
else
|
|
|
|
Console.WriteLine("Not baa!");
|
|
|
|
if (baa > 20) Console.WriteLine("Baa");
|
|
|
|
else Console.WriteLine("Not baa!");
|
|
|
|
You may see code where this is done. However, we highly recommend you not to use this syntax as it is highly prone to [errors](https://www.leadingagile.com/2018/01/the-goto-fail-bug-as-a-coaching-tool/) .
|
|
|
|
# Get Help
|
|
|
|
All the basics covering the syntax in C# are covered here:
|
|
|
|
[https://www.tutorialspoint.com/csharp/index.](https://www.tutorialspoint.com/csharp/index.htm) [htm](https://www.tutorialspoint.com/csharp/index.htm) [l](https://www.tutorialspoint.com/csharp/index.htm)
|
|
|
|
[https://www.w3schools.com/cs/default.asp](https://www.w3schools.com/cs/default.asp)
|
|
|
|
# Assignments
|
|
|
|
[Assignments about this topic can be found here](https://gitea.buutti.com/education/academy-assignments/src/branch/master/C%23%20Basics/3.%20Conditionals)
|
|
|