Skip to content
Snippets Groups Projects
Commit ad68b383 authored by Uwe Wienkop's avatar Uwe Wienkop
Browse files

2021-12-13 Structs

parent ac241cb8
No related branches found
No related tags found
No related merge requests found
......@@ -3,15 +3,15 @@
namespace _10_Enums
{
// Enums definieren jeweils einen neuen DATENTYP, KEINE VARIABLEN
enum Ampelfarben { rot, gelb, grün }
enum Ampelfarben2 { rot, gelb, grün, blau, lila }
class Program
{
public enum Ampelfarben { rot, gelb, grün}
public enum Ampelfarben2 { rot, gelb, grün, blau, lila }
static void Main(string[] args)
{
//enum Ampel { rot, gelb, grün}; // FALSCH!!!
//Ampel = Ampel.rot; // Enums definieren jeweils einen neuen DATENTYP, KEINE VARIABLEN
//enum Ampel { rot, gelb, grün};
//Ampel = Ampel.rot; // FALSCH!!! Enums definieren jeweils einen neuen DATENTYP, KEINE VARIABLEN
int ampel1 = 0;
......@@ -25,7 +25,8 @@ namespace _10_Enums
}
Console.WriteLine((int)ampel2);
Console.WriteLine("-----------");
ampel2++;
ampel2 += 2;
Console.WriteLine(ampel2);
Console.WriteLine((int)ampel2);
......
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RootNamespace>_11_StructIntro</RootNamespace>
</PropertyGroup>
</Project>
using System;
namespace _11_StructIntro
{
struct Person
{ // Felder einer Struct: Geben an, aus welchen Basiselementen eine
// Struktur zusammengesetzt sind
public string name ; // public: name ist von Funktionen AUßERHALB der struct Person zugreifbar
public string vorname;
public int alter;
public string ort ;
public int plz;
// Konstruktoren: Initialisieren die struct. Allen Feldern der Struktur muss
// ein Wert zugewiesen werden!
// Es kann mehrere Konstruktoren (mit mehr oder weniger Parametern) geben
public Person(string Name, string Vorname, int Alter, string Ort, int Plz)
{
name = Name;
vorname = Vorname;
alter = Alter;
ort = Ort;
plz = Plz;
}
public Person(string Name, string Vorname)
{
name = Name;
vorname = Vorname;
alter = -1;
ort = "";
plz = -1;
}
public override string ToString() // Konvertiert eine Person in einen String
// override ~ die Default-Implementierung namespace.struct wird überschrieben
=> $"{vorname} {name} -- Alter: {alter} {plz} {ort}";
}
class Program
{
static void PersonAusgeben(string name, string vorname, int alter, string ort, int plz)
{
}
static void PersonAusgeben(Person p)
{
Console.WriteLine($"{p.vorname} {p.name} -- Alter: {p.alter} {p.plz} {p.ort}");
}
static void Main(string[] args)
{
//anton.name = "Meier";
//anton.vorname = "Anton";
//anton.alter = 27;
//anton.ort = "Nürnberg";
//anton.plz = 90489;
Person anton = new Person("Meier","Anton",27,"Nürnberg",90489);
PersonAusgeben(anton);
Person berta = anton;
anton.vorname = "Antonia";
PersonAusgeben(anton);
PersonAusgeben(berta);
Person claudia = new Person("Schneider", "Claudia");
PersonAusgeben(claudia);
Console.WriteLine(claudia);
string s = claudia.ToString();
// anton, berta, claudia sind WERTETYPEN, da structs
}
}
}
namespace xyz
{
class prog2
{
static void tueEtwas()
{
//_11_StructIntro.Person claudia = new _11_StructIntro.Person();
}
}
}
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RootNamespace>_11_Time</RootNamespace>
</PropertyGroup>
</Project>
using System;
namespace _11_Time
{
struct Time
{
public int time;
public Time(int stunden, int minuten)
{
time = 60 * stunden + minuten;
}
public override string ToString()
{
return base.ToString();
}
}
class Program
{
static int TimeDifInMinutes(Time t2, Time t1) => t2.time - t1.time;
static void Main(string[] args)
{
Time t1 = new Time(9, 45);
Time t2 = new Time(11, 15);
Console.WriteLine(TimeDifInMinutes(t2,t1));
}
}
}
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RootNamespace>_11_UebgKoordinaten</RootNamespace>
</PropertyGroup>
</Project>
using System;
namespace _11_UebgKoordinaten
{
// Erstellen Sie eine Struct Koordinate Coord(double x, double y) mit
// ToString() und Konstruktor(en)
// Erstellen Sie in Program eine Methode CoordDist(), welche den Abstand zwischen zwei Koordinaten bestimmt
// Erstellen Sie in Program eine Methode CoordMove(), welche die Koordinate um ein deltaX, deltaY verschiebt
struct Coord
{
public double x, y;
public Coord(double X, double Y)
{
x = X;
y = Y;
}
public override string ToString() => $"({x}|{y})";
}
class Program
{
static double CoordDist(Coord p1, Coord p2)
{
double dx = p1.x - p2.x;
double dy = p1.y - p2.y;
return Math.Sqrt(dx * dx + dy * dy);
}
static void CoordMove(ref Coord p, double deltaX, double deltaY)
{
p.x += deltaX;
p.y += deltaY;
}
static Coord CoordMove(Coord p, double deltaX, double deltaY)
{
p.x += deltaX;
p.y += deltaY;
return p;
}
static void Main(string[] args)
{
Coord c1 = new Coord(1, 2);
Coord c2 = new Coord(3, 3);
Console.WriteLine(c1);
Console.WriteLine(c2);
Console.WriteLine(CoordDist(c1, c2));
CoordMove(ref c1, 4, 3); // Referenzübergabe der Koord. c1
Console.WriteLine(c1);
Coord c3 = CoordMove(c1, 6, 5); // Werteübergabe von c1, aber return liefert Ergebnis zurück
Console.WriteLine(c3);
}
}
}
......@@ -93,13 +93,19 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "10 UebgSpeisekarteDi", "10
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "10 UebgMoRekursion", "10 UebgMoRekursion\10 UebgMoRekursion.csproj", "{803E6BCD-791C-4F4A-BBDD-DF88E6F97967}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "10 WoerterZaehlen", "10 WoerterZaehlen\10 WoerterZaehlen.csproj", "{83740224-D4AC-4884-B9E5-B13F3AC1DE9A}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "10 WoerterZaehlen", "10 WoerterZaehlen\10 WoerterZaehlen.csproj", "{83740224-D4AC-4884-B9E5-B13F3AC1DE9A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "10 StreamWriterIntro", "10 StreamWriterIntro\10 StreamWriterIntro.csproj", "{3186C668-B6EF-4657-AED7-D98675AE40FE}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "10 StreamWriterIntro", "10 StreamWriterIntro\10 StreamWriterIntro.csproj", "{3186C668-B6EF-4657-AED7-D98675AE40FE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "10 StringSplit2", "10 StringSplit2\10 StringSplit2.csproj", "{1D7678D8-3B0D-4178-9F80-2043D18C8BAD}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "10 StringSplit2", "10 StringSplit2\10 StringSplit2.csproj", "{1D7678D8-3B0D-4178-9F80-2043D18C8BAD}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "10 Enums", "10 Enums\10 Enums.csproj", "{0A59F1EF-68BD-43C7-BA85-EC1557017D86}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "10 Enums", "10 Enums\10 Enums.csproj", "{0A59F1EF-68BD-43C7-BA85-EC1557017D86}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "11 StructIntro", "11 StructIntro\11 StructIntro.csproj", "{F8A06135-B753-408E-B569-D345AA694667}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "11 UebgKoordinaten", "11 UebgKoordinaten\11 UebgKoordinaten.csproj", "{EAAD4537-6255-4C1B-8162-BD7C946F3065}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "11 Time", "11 Time\11 Time.csproj", "{A5C6305D-65D0-4B95-9884-F75E61BDD8E9}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
......@@ -303,6 +309,18 @@ Global
{0A59F1EF-68BD-43C7-BA85-EC1557017D86}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0A59F1EF-68BD-43C7-BA85-EC1557017D86}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0A59F1EF-68BD-43C7-BA85-EC1557017D86}.Release|Any CPU.Build.0 = Release|Any CPU
{F8A06135-B753-408E-B569-D345AA694667}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F8A06135-B753-408E-B569-D345AA694667}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F8A06135-B753-408E-B569-D345AA694667}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F8A06135-B753-408E-B569-D345AA694667}.Release|Any CPU.Build.0 = Release|Any CPU
{EAAD4537-6255-4C1B-8162-BD7C946F3065}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EAAD4537-6255-4C1B-8162-BD7C946F3065}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EAAD4537-6255-4C1B-8162-BD7C946F3065}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EAAD4537-6255-4C1B-8162-BD7C946F3065}.Release|Any CPU.Build.0 = Release|Any CPU
{A5C6305D-65D0-4B95-9884-F75E61BDD8E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A5C6305D-65D0-4B95-9884-F75E61BDD8E9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A5C6305D-65D0-4B95-9884-F75E61BDD8E9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A5C6305D-65D0-4B95-9884-F75E61BDD8E9}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment