Grundlæggende programmering - Darhaq/WikiOpgave GitHub Wiki
1. Eleven kan anvende et programmeringssprog til at udarbejde mindre konsolprogrammer, herunder fejlfinde og teste dem. (overordnet mål som punkt 1-12 dækker.)
using System;
using System.Linq;
using System.Collections.Generic;
using System.Security.Cryptography.X509Certificates;
namespace SearchEngine
{
public enum SøgeKriterier
{
Lærer,
Elev,
Fag
}
public abstract class Person
{
public string ForNavn { get; set; }
public string EfterNavn { get; set; }
public Person(string forNavn, string efterNavn)
{
ForNavn = forNavn;
EfterNavn = efterNavn;
}
}
public abstract class Lærer : Person
{
public Lærer(string forNavn, string efterNavn) : base(forNavn, efterNavn) { }
public abstract List<Fag> GetSubjectsTaught();
}
public abstract class Elev : Person
{
public Elev(string forNavn, string efterNavn) : base(forNavn, efterNavn) { }
public abstract List<Fag> GetSubjectsEnrolled();
}
public abstract class Fag
{
public string Navn { get; set; }
public Lærer Lærer { get; set; }
public List<Elev> Elever { get; set; }
public Fag(string navn, Lærer lærer, List<Elev> elever)
{
Navn = navn;
Lærer = lærer;
Elever = elever;
}
}
public class H1Lærer : Lærer
{
public H1Lærer(string forNavn, string efterNavn) : base(forNavn, efterNavn) { }
public override List<Fag> GetSubjectsTaught()
{
List<Fag> fagLært = new List<Fag>();
foreach (var fag in H1Fag2.AlleFag)
{
if (fag.Lærer == this)
{
fagLært.Add(fag);
}
}
return fagLært;
}
}
public class H1Elev : Elev
{
public H1Elev(string forNavn, string efterNavn) : base(forNavn, efterNavn) { }
public override List<Fag> GetSubjectsEnrolled()
{
List<Fag> subjectsEnrolled = new List<Fag>();
foreach (var fag in H1Fag2.AlleFag)
{
if (fag.Elever.Contains(this))
{
subjectsEnrolled.Add(fag);
}
}
return subjectsEnrolled;
}
}
public class H1Fag : Fag
{
public H1Fag(string navn, Lærer lærer, List<Elev> elever) : base(navn, lærer, elever) { }
}
public static class H1Fag2
{
public static List<Fag> AlleFag { get; set; }
static H1Fag2()
{
var lærer1 = new H1Lærer("Niels", "Olesen");
var lærer2 = new H1Lærer("Flemming", "Sørensen");
var lærer3 = new H1Lærer("Peter", "Suni Lindeskov");
var lærer4 = new H1Lærer("Henrik", "Vincents Poulsen");
var elev1 = new H1Elev("Alexander", "Mathias Thamdru");
var elev2 = new H1Elev("Allan", "Gawron");
var elev3 = new H1Elev("Andreas", "Carl Balle");
var elev4 = new H1Elev("Darab", "Haqnazar");
var elev5 = new H1Elev("Felix", "Enok Berger");
var elev6 = new H1Elev("Jamie", "J. d. I. S. E.-D.");
var elev7 = new H1Elev("Jeppe", "Carlseng Pedersen");
var elev8 = new H1Elev("Joseph", "Holland-Hale");
var elev9 = new H1Elev("Kamil", "Marcin Kulpa");
var elev10 = new H1Elev("Loke", "Emil Bendtsen");
var elev11 = new H1Elev("Mark", "Hyrsting Larsen");
var elev12 = new H1Elev("Niklas", "Kim Jensen");
var elev13 = new H1Elev("Rasmus", "Peter Hjorth");
var elev14 = new H1Elev("Sammy", "Damiri");
var elev15 = new H1Elev("Thomas", "Mose Holmberg");
var elev16 = new H1Elev("Tobias", "Casanas Besser");
var fag1 = new H1Fag("Grundlæggende Programmering", lærer1, new List<Elev> { elev1, elev2, elev3, elev4, elev5, elev6, elev7, elev8, elev9, elev10, elev11, elev12, elev13, elev14, elev15, elev15, elev16 });
AlleFag = new List<Fag> { fag1 };
}
}
class Program
{
static void Main(string[] args)
{
while (true)
{
Console.WriteLine("Indtast søgekriterier (Lærer, elev eller fag):");
string criteriaString = Console.ReadLine();
if (Enum.TryParse<SøgeKriterier>(criteriaString, out var Kriterier))
{
switch (Kriterier)
{
case SøgeKriterier.Lærer:
Console.WriteLine("Indtast lærerens navn:");
string lærerNavn = Console.ReadLine();
var matchingTeachers = H1Fag2.AlleFag.Select(s => s.Lærer)
.Where(t => t.ForNavn.Equals(lærerNavn, StringComparison.OrdinalIgnoreCase));
Console.WriteLine($"Fag undervist af {lærerNavn}:");
foreach (var fag in matchingTeachers.SelectMany(t => t.GetSubjectsTaught()))
{
Console.WriteLine(fag.Navn);
}
break;
case SøgeKriterier.Elev:
Console.WriteLine("Indtast den studerendes navn:");
string elevNavn = Console.ReadLine();
var matchingStudents = H1Fag2.AlleFag.SelectMany(s => s.Elever)
.Where(p => p.ForNavn.Equals(elevNavn, StringComparison.OrdinalIgnoreCase));
Console.WriteLine($"Fag indskrevet af {elevNavn}:");
foreach (var fag in matchingStudents.SelectMany(s => s.GetSubjectsEnrolled()))
{
Console.WriteLine(fag.Navn);
}
break;
case SøgeKriterier.Fag:
Console.WriteLine("Indtast emnets navn:");
string fagNavn = Console.ReadLine();
var matchingSubjects = H1Fag2.AlleFag
.Where(s => s.Navn.Equals(fagNavn, StringComparison.OrdinalIgnoreCase));
Console.WriteLine($"Emne {fagNavn} er undervist af:");
foreach (var lærer in matchingSubjects.Select(s => s.Lærer))
{
Console.WriteLine($"{lærer.ForNavn} {lærer.EfterNavn}");
}
Console.WriteLine($"Fag {fagNavn} er indskrevet af:");
foreach (var elev in matchingSubjects.SelectMany(s => s.Elever))
{
Console.WriteLine($"{elev.ForNavn} {elev.EfterNavn}");
}
break;
}
}
}
}
}
}using System;
namespace Datatyper
{
class MainClass
{
public static void Main(string[] args)
{
//int = heltal, float = kommatal, double = kommatal, char = karakter (bogstaver)
//float myFloat = 10.15; //du kan bruge float men double er the way to go
int myInt = -150;
double myDouble = -40.321;
char myChar = 'a';
Console.WriteLine(myInt);
Console.WriteLine(myDouble);
Console.WriteLine(myChar);
Console.ReadKey();
}
}
}using System;
namespace Arrays
{
class MainClass
{
public static void Main(string[] args)
{
int[] numbers = {0, 2, 4, 6, 8, 10};
numbers[5] = -25;
Console.WriteLine(numbers[5]);
//index 0 = 0, index 1 = 2, index 2 = 4, index 3 = 6, index 4 = 8, index 5 = 10
//må ikke gå mindre eller højere end dine valgte arrays
}
}
}
// Arrays er en samling af værdier i samme kasse. Indeholder som regel int værdier
// Index er indgangen/døren til værdien
// starter ved 0 og forøges med en for hvert element i array'edusing System;
namespace ArraysTemperatur
{
class MainClass
{
public static void Main(string[] args)
{
Double sum = 0;
Temp t = new Temp(100, 52, 98, 30, 11, 54, 87);
}
public class Temp
{
private int[] temp = new int[7]; // array
public Temp(int d1, int d2, int d3, int d4, int d5, int d6, int d7)
{
temp[0] = d1;
temp[1] = d2;
temp[2] = d3;
temp[3] = d4;
temp[4] = d5;
temp[5] = d6;
temp[6] = d7;
{
for (int c = 0; c < 7; c++) ;
}
Console.Write("Gennemsnittet er {0} ");
{
}
}
}
}
}- Et multidimensionalt array er et array med mere end én dimension. Bruges ofte i scenarier, der involverer tabel osv.
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
# Accessing elements by row and column indices
print(matrix[1][2]) # Output: 6 (second row, third column)- enkelt dimensional array indeholder elementer i en lineær sekvens. Tilgås ved hjælp af et enkelt indeks
- Indeholder elementer i en gitterlignende struktur med flere dimensioner. Tilgængelig ved hjælp af flere indekser (en for hver dimension).
static int AddNumbers(int a, int b)
{
int result = a + b;
return result; // Denne værdi returneres
}
If/Else statement
using System;
namespace Ifelsestatements
{
class MainClass
{
public static void Main(string[] args)
{
int dice = 6;
// 3+ for at ramme
if (dice >= 3) {
if (dice == 6)
Console.WriteLine("CRITICAL HIT!");
else
Console.WriteLine("Hit!");
Console.WriteLine("Monster takes damage");
}
else
Console.WriteLine("Miss!");
}
}
}
//Udføre ikke else miss! eller noget andet statement siden if statement er true: 5 >= 3
//Hvis dice er mindre end 3 så går den ned til else miss! statement fordi if statement er false: 2 >= 3
//else if (dice == 6)
//Console.WriteLine("CRITICAL HIT! MONSTER LOST ITS HEAD!");
//Else if, når man gerne vil adde en anden if statementusing System;
namespace Loops
{
class MainClass
{
public static void Main(string[] args)
{
//while loop:
int i = 0;
while (i <= 10)
Console.WriteLine(i);
i++;
//Kan skrives i en sætning hvis du ligger i++ i writeline parenteserne
//post inscrement^^ Den tæller op til 10 fra 0
//hvis du skriver det ++i så tæller den faktisk en mere op, så fra 0 til 11
//do-while loop
int i = 0;
do {
Console.WriteLine(i++);
} while (i <= 10);
//både while og for loop
int k = 0; //initialiseringen er her
while (k <= 10) { //boolske udtryk er her
Console.WriteLine(k);
k++; //ændringen er her
}
for (int i = 10; i >= 0; i--)
Console.WriteLine(i);
//resultatet er at den tæller fra 0-10 2 gange. En gang for while loop, den anden for for loop
}
}
}using System;
namespace SWITCHCASE
{
class MainClass
{
public static void Main(string[] args)
{
string tast;
Console.WriteLine("Vælg drink ");
tast = Console.ReadLine();
switch (tast)
{
case "1":
Console.WriteLine("sex on the beach - 150$ ");
break;
case "2":
Console.WriteLine("bloody mary - 300$ ");
break;
case "3":
Console.WriteLine("vodka soda - 20$ ");
break;
default:
Console.WriteLine("Du har ikke tastet 1,2 eller 3 tast return");
break;
}
Console.ReadKey();
}
}
}using System;
class Program
{
static void Main(string[] args)
{
// Deklarer variabler for længde og bredde
double længde, bredde;
// Tildel værdier til variablerne
længde = 5.0;
bredde = 3.0;
// Beregn arealet af rektanglet
double areal = længde * bredde;
// Vis resultatet
Console.WriteLine("Rectangle Areal: " + areal);
// Angiv en konstant for konvertering
const double KonverteringRate = 0.621371;
// Konverter kilometer til miles
double kilometer = 10.0;
double miles = kilometer * KonverteringRate;
// Vis den konverterede afstand
Console.WriteLine("Distance i Miles: " + miles);- 1-linjes kodekommentar
- multi-linjers kodekommentar
int alder = 25; // Gemmer brugerens alder
/*
Denne kodeblok beregner den
nedsatte pris for et produkt.
Den tager højde for den oprindelige
pris og den gældende rabat.
*/- viser jeg selv fysisk
- breakpoints
- F-5 debugging
using System;
class Program { static double CalculateCircleArea(double radius) { double area = Math.PI * radius * radius; return area; }
static void Main(string[] args)
{
double circleRadius = 3.5; // Radius of the circle
double area = CalculateCircleArea(circleRadius);
Console.WriteLine("Circle Area: " + area);
}
}
- Vi bruger double til variablen circleRadius, da radius kan have decimalværdier.
I metoden CalculateCircleArea:
- Vi bruger double til radius-parameteren, da radius kan have decimalværdier.
- Vi bruger Math.PI, som er en foruddefineret konstant af typen double, til at repræsentere den matematiske konstant π.
- Metoden BeregnCirkelAreal returnerer en double-værdi, der repræsenterer det beregnede areal.
## 12. Eleven kan erklære og oprette metoder i et objekt med og uden returværdi og parametre, samt gøre brug af disse.
```csharp
using System;
class BankAccount
{
private decimal balance; // Privat field to store account balance
public void Deposit(decimal amount)
{
balance += amount;
}
public void Withdraw(decimal amount)
{
if (amount <= balance)
{
balance -= amount;
}
else
{
Console.WriteLine("Insufficient balance.");
}
}
public decimal GetBalance()
{
return balance;
}
}
class Program
{
static void Main(string[] args)
{
BankAccount account = new BankAccount(); // Create a bank account
account.Deposit(1000); // Deposit $1000
account.Withdraw(300); // Withdraw $300
decimal balance = account.GetBalance(); // Get the remaining balance
Console.WriteLine("Current Balance: " + balance.ToString("C"));
}
}
- Jeg opretter en BankAccount-klasse med et privat felt balance til at gemme saldoen.
- Vi definerer metoder i klassen
- Main method