Work on lectures 1 and 2

main
borb 1 week ago
parent 8c4a02784b
commit 4b0f5ebd72

File diff suppressed because one or more lines are too long

@ -95,27 +95,20 @@ The template project should now run and print "Hello World!" to the console. Try
# C# Syntax - Statements # C# Syntax - Statements
```c#
using System; using System;
namespace MyAwesomeProgram namespace MyAwesomeProgram
{ {
class Program class Program
{ {
static void Main(string[] args) static void Main(string[] args)
{ {
Console.WriteLine("Hello World!"); Console.WriteLine("Hello World!");
} }
} }
} }
```
Rows = statements Rows = statements
@ -159,6 +152,10 @@ Any text inside a comment will not be executed
Use comments to explain your code or comment out actual code for testing and debugging Use comments to explain your code or comment out actual code for testing and debugging
## try online
https://www.programiz.com/csharp-programming/online-compiler/
# Assignments # Assignments
[Assignments about this topic can be found here](https://gitea.buutti.com/education/academy-assignments/src/branch/master/C%23%20Basics/1.%20C%23%20Basics%20Assignments) [Assignments about this topic can be found here](https://gitea.buutti.com/education/academy-assignments/src/branch/master/C%23%20Basics/1.%20C%23%20Basics%20Assignments)

File diff suppressed because one or more lines are too long

@ -1,242 +1,334 @@
# Variables & Types ---
marp: true
![](imgs/2%20Variables%20and%20Types_0.png) paginate: true
math: mathjax
theme: buutti
title: 2. Variables and Types
--- ---
# Overview # Variables and Types
Variables
Data Types
Arithmetic Operators
Increment & Decrement
Assignment Operators
Strings <!-- headingDivider: 5 -->
<!-- class: invert -->
Character Constants ## Overview
String Interpolation * Variables
* Data Types
* Arithmetic Operators
* Increment & Decrement
* Assignment Operators
* Strings
* Character Constants
* String Interpolation
# Variables ## Variables
* Variable can be thought of as a name for a certain point in computer's memory. * A variable can be thought of as a name for a certain address in computer's memory
* Using this name we can access the value on the computer's memory * Using this name we can access the value on the computer's memory
* We can read the value * The value can be read or written
* We can manipulate the value
* On more practical terms: We can assign values to named variables. * On more practical terms: We can assign values to named variables.
# C# Syntax - Declaring Variables ### Declaring variables
Every variable declaration in C# requires the type and the name of the variable, for example:
* Every variable declaration in C# requires the ***type*** and the ***name*** of the variable, for example:
```csharp
int x; int x;
```
* After declaration, you can assign a ***value*** for declared variables:
```csharp
x = 25;
```
* Variable declaration with value assignment can be done in one line:
```csharp
int x = 25;
```
You can assign a value for declared variables: ### Printing to console with `Console.WriteLine`
x = 25; <div class='columns' markdown='1'>
<div markdown='1'>
Variable declaration with value can be executed with one line: * We can use the method `Console.WriteLine` to write, a.k.a. ***print*** to the C# console
```csharp
Console.WriteLine("Hello World!")
```
* We can also declare variables and print their values like this:
```csharp
int example = 123;
Console.WriteLine(example);
// prints 123
```
int x = 25; </div>
<div markdown='1'>
This program prints the value `15`:
```csharp
using System; using System;
namespace MyAwesomeProgram namespace MyAwesomeProgram
{ {
class Program class Program
{ {
static void Main(string[] args) static void Main(string[] args)
{ {
int a = 25; int a = 25;
int b = 10; int b = 10;
Console.WriteLine(a - b); Console.WriteLine(a - b);
} }
} }
} }
```
Everything within a console application executes inside the Main body </div>
</div>
This program prints the value "15" to the console
# Why we use variables? ### Extra: Modifiers
<!-- _class: "extra invert" -->
Variables are key ingredients in programming. * A common modifier to add in front of a variable is `const`, short for ***constant***
* If we know that a value of a variable is never going to change during the execution of the script, we can set it to `const`:
```c#
const int one = 1;
We don't need to know the exact values when we write the code but the values can be given later while the program is executed one = 2; // raises an error
```
* Some programmers prefer using `const` by default.
* Other modifiers include ***access modifiers*** introduced in [Lecture 7](7-classes-and-objects#access-modifiers).
As an example we can take an input from a user and store it to a variable and use that value somewhere later in our program ## Data types
# What is a data type? ### What is a data type?
* Data type tells to a computer what type of data is stored in a variable. * Data type tells to a computer what type of data is stored in a variable.
* Data types are commonly divided into two categories: * Data types are commonly divided into two categories:
* Primitive data types * Primitive data types
* Reference data types * Reference data types
* Here we go through the primitive data types * Here we go through the primitive data types
* We dig deeper on the differences of these data types later in the Classes and Objects -section * We dig deeper on the differences of these data types later in [Lecture 7](7-classes-and-objects#value-and-reference-types)
# Primitive Data Types in C#
| __Type__ | __Represents__ | __Range__ | __Default Value__ |
| :-: | :-: | :-: | :-: |
| __bool__ | __Boolean value__ | __True or False__ | __False__ |
| __byte__ | __8-bit unsigned integer__ | __0 to 255__ | __0__ |
| __char__ | __16-bit Unicode character__ | __U +0000 to U +ffff__ | __\\0'__ |
| __decimal__ | __128-bit precise decimal values with 28-29 significant digits__ | __(-7.9 x 1028 to 7.9 x 1028) / 100 to 28__ | __0.0M__ |
| __double__ | __64-bit double-precision floating point type__ | __(+/-)5.0 x 10-324 to (+/-)1.7 x 10308__ | __0.0D__ |
| __float__ | __32-bit single-precision floating point type__ | __-3.4 x 1038 to + 3.4 x 1038__ | __0.0F__ |
| __int__ | __32-bit signed integer type__ | __-2,147,483,648 to 2,147,483,647__ | __0__ |
More types listed here: ## Primitive data types
[https://www.w3schools.com/cs/cs\_data\_types.asp](https://www.w3schools.com/cs/cs_data_types.asp) | Type | Represents | Range | Default |
|:----------|:-------------------------------|:-------------------------------------------------|:--------|
| `bool` | Boolean value | `true` or `false` | `false` |
| `int` | 32-bit signed integer | $-2147483648$ to $2147483647$ | `0` |
| `float` | 32-bit single-precision float | $±1.5 \cdot 10^{-45}$ to $±3.4 \cdot 10^{38}$ | `0.0F` |
| `double` | 64-bit double-precision float | $±5.0 \cdot 10^{-324}$ to $±1.7 \cdot 10^{308}$ | `0.0D` |
| `decimal` | 128-bit precise decimal values | $±1.0 \cdot 10^{-28}$ to $±7.9228 \cdot 10^{28}$ | `0.0M` |
| `char` | 16-bit Unicode character | `U+0000` to `U+ffff` | `\0` |
| `byte` | 8-bit unsigned integer | $0$ to $255$ | `0` |
# Data Types in C# - Example More types listed in the [C# reference](https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/built-in-types)!
double airPressure = 1.2; // Use generally for everything ### Data type examples
```csharp
double airPressure = 1.2; // Use for most decimal numbers
decimal accountBalance = 1.2m; // Use for accuracy (e.g. financial applications) decimal accountBalance = 1.2m; // Use for accuracy (e.g. financial applications)
float bulletSpeed = 1.2f; // Use only when you know its precision will be enough
float bulletSpeed = 1.2f; // Use only when you know the precision will be enough (in other words, don't use)
bool loggedIn = false; bool loggedIn = false;
char previousInput = 'b'; char previousInput = 'b';
```
# Assignments (variables) * `char` is only used for single characters, multi-character ***strings*** will be introduced in a bit.
[Assignments about this topic can be found here](https://gitea.buutti.com/education/academy-assignments/src/branch/master/C%23%20Basics/2.1.%20Variables%20&%20Types) ## Extra: Casting data types
<!-- _class: "extra invert" -->
# Assignments (data types) Data types can be ***cast*** to another either...
[Assignments about this topic can be found here](https://gitea.buutti.com/education/academy-assignments/src/branch/master/C%23%20Basics/2.2.%20Data%20Types) <div class='columns' style="grid-template-columns: 2.5fr 3fr;" markdown='1'>
<div markdown='1'>
# What are arithmetic operations?
The arithmetic operations are common mathematical operations:
addition
subtraction ...implicitly:
```csharp
double valueAddedTax = 25.5;
decimal valueAddedTaxDecimal = valueAddedTax;
```
multiplication </div>
<div markdown='1'>
division ...explicitly:
```csharp
double valueAddedTax = 25.5;
decimal valueAddedTaxDecimal = (decimal)valueAddedTax;
```
modulus (remainder, in Finnish jakojäännös) </div>
</div>
exponentiation * Casting is useful when, for example, when we want to sum a `double` and a `decimal` together:
```csharp
double a = 1.0;
decimal b = 2.1m;
Console.WriteLine(a + (double)b);
Console.WriteLine((decimal)a + b);
```
* [C# Guide: Casting and type conversions](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/types/casting-and-type-conversions)
Earlier we used an _arithmetic operator _ to subtract b from a: ## Assignments (variables)
<!--_class: "exercise invert" -->
Console.WriteLine(a - b); [Assignments about this topic can be found here](https://gitea.buutti.com/education/academy-assignments/src/branch/master/C%23%20Basics/2.1.%20Variables%20&%20Types)
# Arithmetic Operators ## Assignments (data types)
<!--_class: "exercise invert" -->
| Operator | Name | Example | Description | [Assignments about this topic can be found here](https://gitea.buutti.com/education/academy-assignments/src/branch/master/C%23%20Basics/2.2.%20Data%20Types)
| :-: | :-: | :-: | :-: |
| + | Addition | a + b | Adds together two values |
| - | Subtraction | a - b | Subtracts one value from another |
| * | Multiplication | a * b | Multiplies two values |
| / | Division | a / b | Divides one value by another |
| % | Modulus | a % b | Returns the division remainder |
| ++ | Increment | a++ | Increases the value of a variable by 1 |
| -- | Decrement | a- | Decreases the value of a variable by 1 |
--- ## Arithmetic operations?
Tässä on kaikki aritmeettiset operaattorit * ***Arithmetic operations*** are common mathematical operations:
* Addition
* Subtraction
* Multiplication
* Division
* Modulus (remainder, in Finnish *jakojäännös*)
* The operations are represented by **_arithmetic operators_**
# Exercise 1: Trying Out Variables ## Arithmetic Operators
Create a new console application as we did in the last exercise and declare two variables of type __double__ _._ | Operator | Name | Example | Description |
|:---------|:---------------|:--------|:---------------------------------------|
| `+` | Addition | `a + b` | Adds together two values |
| `-` | Subtraction | `a - b` | Subtracts one value from another |
| `*` | Multiplication | `a * b` | Multiplies two values |
| `/` | Division | `a / b` | Divides one value by another |
| `%` | Modulus | `a % b` | Returns the division remainder |
| `++` | Increment | `a++` | Increases the value by 1 |
| `--` | Decrement | `a-` | Decreases the value by 1 |
## Exercise 1: Trying Out Variables
<!--_class: "exercise invert" -->
1) Create a new console application and declare two variables of type `double`.
2) Assign different values for those variables.
3) Print the sum, difference, fraction and product of those values to the console.
## The assignment operator
We have used the assignment operator `=` for assigning values for variables:
```csharp
int x;
x = 25;
```
* ***Note*** the difference between `=` and `==` introduced in [Lecture 3](3-conditionals#comparison-operators)!
* `=` is used for assigning values for variables, `==` is used for ***comparing*** values
Assign different values for those variables. ### Assignment operators
Print the __sum__ , __difference__ , __fraction __ and __product __ of those values to the console. <div class='columns' markdown='1'>
<div markdown='1'>
# Increment & Decrement | Operator | Example | Same As |
|:---------|:---------|:------------|
| `=` | `x = 5` | `x = 5` |
| `+=` | `x += 5` | `x = x + 5` |
| `-=` | `x -= 5` | `x = x - 5` |
| `*=` | `x *= 5` | `x = x * 5` |
| `/=` | `x /= 5` | `x = x / 5` |
| `%=` | `x %= 5` | `x = x % 5` |
Increment and decrement operations are operations that can be used to increment or decrement a variable value by 1. </div>
<div markdown='1'>
Most programming languages implement these operations * As shown here, there are some assignment operators that work as ***shorthands*** for longer assignments
* Particularly useful when the variable name is longer, so you don't have to write it twice when its value is changed
Addition example: int a = 3; a = a + 1; _// a is now 4_ Can be written with increment: int a = 3; a++; _// a is now 4_ </div>
</div>
Decrement is like increment but with just subtraction
Substraction example: int a = 3; a = a - 1; _// a is now 2_ Can be written with decrement: int a = 3; a--; _// a is now 2_ ### Assignment operators: An example
Increment and decrement operators can be written in two ways. So sometimes you may also see this: int a = 3; --a; _// a is now 2_ _ _ ++a; _// a is now 3_ ```csharp
int uppercaseLetters = 2;
uppercaseLetters += 4; // is now 6
This will do the same thing as a++ and a--. There is a small difference between these syntaxes though. int specialCharacters = 2;
specialCharacters *= 2; // is now 4
int a = 3;const _ _ b = _ _ a++; _// b will be 3_ Console.WriteLine(a); _// this will print out 4_ Here the assignment to b happens before incrementing a, thus b will be assigned value 3. Console.WriteLine(uppercaseLetters);
Console.WriteLine(specialCharacters);
```
int a = 3;const _ _ b = _ _ ++a; _// b will be 4_ Console.WriteLine(a); _// this will print out 4_ Here the assignment to b happens after incrementing a, thus b will be assigned value 4. ### Increment and decrement operations
--- * You can increment or decrement a variable value by 1 with dedicated short-hands
* Most programming languages implement these!
Täällä voi helposti demota: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Increment <div class='columns' markdown='1'>
<div markdown='1'>
# Assignment Operators * Addition example:
```csharp
int a = 3;
We have used the assignment operator ' __='__ for assigning values for variables: a = a + 1; // a is now 4
a += 1; // a is now 5
a++; // a is now 6
```
int x; </div>
<div markdown='1'>
x = 25; * Subtraction example:
```csharp
int a = 3;
__Notice __ the difference between '=' and the conditional '=='! a = a - 1; // a is now 2
a -= 1; // a is now 1
a--; // a is now 0
```
'=' is used for assigning values for variables, '== is used for comparing values
| Operator | Example | Same As | </div>
| :-: | :-: | :-: | </div>
| = | x = 5 | x = 5 |
| += | x += 5 | x = x + 5 |
| -= | x -= 5 | x = x - 5 |
| *= | x *= 5 | x = x * 5 |
| /= | x /= 5 | x = x / 5 |
| %= | x %= 5 | x = x % 5 |
--- * `++` and `--` are called the ***increment and decrement operators***
Tässä on joitakin asetusoperaattoreita, lisäksi loogiset (ei käydä tässä)
# Operators - Example ### Extra: Increment/decrement operation precedence
<!-- _class: "extra invert" -->
int uppercaseLetters = 2; * Note that incrementing can be written as ***prefix*** (`++i`) or a ***postfix*** (`i++`)
* In this example, `a++` and `++a` do exactly the same:
```csharp
int a = 3;
a++; // a is now 4
++a; // a is now 5
```
* Their exact difference is [complicated](https://stackoverflow.com/questions/3346450/what-is-the-difference-between-i-and-i-in-c), and in some cases, using either prefix or postfix form can produce different results:
uppercaseLetters += 4; // is now 6 <div class='columns' markdown='1'>
<div markdown='1'>
int specialCharacters = 2; ```csharp
int a = 3;
int b = ++a;
Console.WriteLine(b); // 4
```
Assignment of `b` happens after `++`,
so its value is 4
specialCharacters *= 2; // is now 4 </div>
<div markdown='1'>
Console.WriteLine(uppercaseLetters); ```csharp
int a = 3;
int b = a++;
Console.WriteLine(b); // 3
```
Assignment of `b` happens before `++`,
so its value is 3
Console.WriteLine(specialCharacters); </div>
</div>
This outputs 6 and 4
# Strings ## Strings
String is a special type, which contains an array of characters. You can declare and assign strings like any other type of variables: String is a special type, which contains an array of characters. You can declare and assign strings like any other type of variables:
@ -252,7 +344,7 @@ string fullName = firstName + " " + lastName;
Console.WriteLine(fullName); // Outputs "Johannes Kantola" Console.WriteLine(fullName); // Outputs "Johannes Kantola"
# Character Constants ## Character Constants
Character constants are preceded by a backslash '\\' and can be used for formatting strings Character constants are preceded by a backslash '\\' and can be used for formatting strings
@ -276,7 +368,7 @@ Kantola
All character constants: [https://www.tutorialspoint.com/csharp/csharp\_constants.htm](https://www.tutorialspoint.com/csharp/csharp_constants.htm) All character constants: [https://www.tutorialspoint.com/csharp/csharp\_constants.htm](https://www.tutorialspoint.com/csharp/csharp_constants.htm)
# String Interpolation ## String Interpolation
Concatenating multiple variables into one string with the '+' operator quickly becomes tedious Concatenating multiple variables into one string with the '+' operator quickly becomes tedious
@ -290,7 +382,7 @@ Console.WriteLine($"{animal} says {sound}!");
// Outputs "Dog says Woof!" // Outputs "Dog says Woof!"
# String Formatting ## String Formatting
You can add __format strings__ to change the way variables are interpolated into a string You can add __format strings__ to change the way variables are interpolated into a string
@ -304,7 +396,7 @@ Console.WriteLine($"Pi to three digits: {pi:G3}");
// Outputs "Pi to three digits: 3.14" // Outputs "Pi to three digits: 3.14"
# Console.ReadLine() ## Console.ReadLine()
For the next exercise, you'll need the Console.ReadLine() method. The method pauses the program, waits for an input stream from the console that pops up, and returns the value of the input: For the next exercise, you'll need the Console.ReadLine() method. The method pauses the program, waits for an input stream from the console that pops up, and returns the value of the input:
@ -312,13 +404,16 @@ string userInput = Console.ReadLine();Console.WriteLine(userInput);
![](imgs/2%20Variables%20and%20Types_1.png) ![](imgs/2%20Variables%20and%20Types_1.png)
# Exercise 2: weekday survey
## Exercise 2: Weekday survey
<!--_class: "exercise invert" -->
Create a console application which asks the user which weekday it is and assigns the answer to a string variable. Create a console application which asks the user which weekday it is and assigns the answer to a string variable.
Print "Have a nice weekday!" to the console where weekday is replaced with the string the user wrote. Print "Have a nice weekday!" to the console where weekday is replaced with the string the user wrote.
# Assignments (arithmetic operations) ## Assignments (arithmetic operations)
<!--_class: "exercise invert" -->
[Assignments about this topic can be found here](https://gitea.buutti.com/education/academy-assignments/src/branch/master/C%23%20Basics/2.3.%20Arithmetic%20Operations) [Assignments about this topic can be found here](https://gitea.buutti.com/education/academy-assignments/src/branch/master/C%23%20Basics/2.3.%20Arithmetic%20Operations)

Loading…
Cancel
Save