Commit 40a25eb1 authored by Uwe Wienkop's avatar Uwe Wienkop

2020-07-07 Di

parent 4687864a
......@@ -65,7 +65,7 @@ namespace _01OperatorOverloading
//public static Bruch operator ++(Bruch b) { b.z += b.n; return b; }
//public static Bruch operator --(Bruch b) { b.z -= b.n; return b; }
// !!! So geht es richtig:
// !!! So geht es richtig: x = 5; cw(x++)--> cw(x); x=x+1 , cw(++x) --> x=x+1;cw(x)
public static Bruch operator ++(Bruch b) { return new Bruch(b.z + b.n, b.n); }
public static Bruch operator --(Bruch b) { return new Bruch(b.z - b.n, b.n); }
public override string ToString() => $"{z} / {n}";
......@@ -78,6 +78,8 @@ namespace _01OperatorOverloading
{
static void Main(string[] args)
{
Console.WriteLine(2 << 3); // 10 << 3 --> 10 000
Console.WriteLine("***************");
Bruch b1 = new Bruch(2, 3);
Bruch b2 = new Bruch(2);
Bruch b3 = new Bruch("3/4");
......@@ -126,6 +128,9 @@ namespace _01OperatorOverloading
Bruch b7 = new Bruch(1, 3);
Console.WriteLine(b7 << 2);
Bruch b8 = new Bruch(2, 4);
Console.WriteLine(-b8);
}
}
}
......@@ -15,8 +15,14 @@ namespace _01OperatorTrueFalse
this.status = status;
}
public static bool operator true(LaunchStatus x) => x == Green || x == Yellow;
public static bool operator false(LaunchStatus x) => x == Red;
public static bool operator true(LaunchStatus x)
{
Console.WriteLine($"OP-true {x == Green || x == Yellow}"); return x == Green || x == Yellow;
}
public static bool operator false(LaunchStatus x)
{
Console.WriteLine($"OP-false: {x == Red}"); return x == Red;
}
public static LaunchStatus operator &(LaunchStatus x, LaunchStatus y)
{
......@@ -61,6 +67,9 @@ namespace _01OperatorTrueFalse
Console.WriteLine(okToLaunch1 ? "Ready to go!" : "Wait!");
// okToLaunch1 ---(op true)--> bool
//if (okToLaunch1.Equals(okToLaunch2))
Console.WriteLine( "*************");
if (okToLaunch1)
Console.WriteLine("okToLaunch1 = true");
}
static LaunchStatus GetFuelLaunchStatus()
......
......@@ -31,7 +31,7 @@ namespace _03VererbungKfzIntro
//Beim Lkw wird eine Steuer über Gewicht und andere Bedingungen erhoben
//Lkw-Steuer richtet sich auch nach Schadstoffklassen und Geräuschklassen
//Der Höchstsatz für die günstigste Lkw-Steuerklasse beträgt 556,00 Euro
class Kfz
class Kfz
{
/* private */static int kfzZaehler = 0;
public string kennzeichen { get; private set; } // private ist die default-Einstellung
......
......@@ -60,10 +60,11 @@ namespace _04_UebgMo_ZyklischeListe
{
static void Main(string[] args)
{
CycleList cl = new CycleList();
cl.AddEnd("Anton");
cl.AddEnd("Berta");
//cl.CloseCycle();
cl.CloseCycle();
cl.Print();
Console.WriteLine("-------------");
cl.AddEnd("Claudia");
......
......@@ -50,7 +50,7 @@ namespace _06Ausnahmen
// Bei ...
// Fehlerfreier Ausführung des try-Blocks
// Fehlerhafter Ausführung des try-Blockks mit und ohne catch
// (auch mit weiterem throw)
// (auch mit weiterem throw [mit und ohne Parameter] )
}
}
catch (Exception)
......
......@@ -5,7 +5,7 @@ namespace _08_DelegateAnwendungen
{
class Program
{
delegate T MeineFkt<T>(T x);
delegate T MeineFkt<T>(T x); // T=int --> int-Parameter & int-Ergebnis
//delegate bool Predicate<T>(T x);
//delegate void Action<T>(T x);
//delegate void Action();
......
......@@ -9,12 +9,12 @@ namespace _08Button
string beschriftung;
public event OnMouseClick onMouseClick;
// Event ist eine Einschränkung der Delegates:
// INNERHALB der Klasse, in der die Event-Variable angelegt ist, gibt es keine
// (1) INNERHALB der Klasse, in der die Event-Variable angelegt ist, gibt es keine
// Einschränkungen ( =null, =Funktion, ?.Invoke() ) sind ohne Einschränkungen erlaubt
//
// AUßERHALB der Klassse:
// Nur noch += und -= , Kein =null und kein =Funktion
// Kein direkter event-Aufruf, Aufruf muss über eine Methode der Klasse erfolgen
// (2) AUßERHALB der Klassse gelten die folgenden Einschränkungen:
// a) Nur noch += und -= , Kein =null und kein =Funktion
// b) Kein direkter event-Aufruf, Aufruf muss über eine Methode der Klasse erfolgen
public Button(string beschriftung) { this.beschriftung = beschriftung; }
public void EreignisAusfuehren() // wird aufgerufen, wenn der Button angeklickt wird
......@@ -46,10 +46,10 @@ namespace _08Button
b1.onMouseClick += BerechneWert;
b1.onMouseClick += NochEineBerechnung;
//b1.onMouseClick = BerechneWert; // Bei Event ist die direkte Zuweisung nicht erlaubt, nur += und -=
b1.onMouseClick = BerechneWert; // Bei Event ist die direkte Zuweisung nicht erlaubt, nur += und -=
b1.EreignisAusfuehren(); // Annahme: Es wurde auf der Oberfläche der Button angeklickt
//b1.onMouseClick?.Invoke(); // Bei Event ist der direkte Aufruf nicht erlaubt,
b1.onMouseClick?.Invoke(); // Bei Event ist der direkte Aufruf nicht erlaubt,
// nur über eine Methode der Klasse
}
}
......
......@@ -81,11 +81,11 @@ namespace _11BinTreePersVerwaltung2
/// <summary>
/// Gibt die Daten des binären Baums rekursiv aus
/// </summary>
public void print()
public void print() // Methode der Klasse Node
{
if (left != null)
left.print();
Console.WriteLine(data);
Console.WriteLine(this.data);
if (right != null)
right.print();
}
......
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
</Project>
using System;
namespace SS2020Test
{
delegate void myDelegate(bool x);
//delegate int myLogic(int x, int y);
abstract class LogicElement
{
bool[] inputs;
bool out1;
string me;
public LogicElement(int count, string me)
{
inputs = new bool[count];
this.me = me;
Update();
}
public event myDelegate Output;
public abstract bool Logic(bool x, bool y);
private void Input(int idx, bool val)
{
Console.Write($"<{me} = {val} | {out1} ");
inputs[idx] = val;
Update();
Console.WriteLine($"--> {out1}>");
Output?.Invoke(out1);
}
private void Update()
{
out1 = (inputs.Length == 2) ?
Logic(inputs[0], inputs[1]) : Logic(inputs[0], inputs[0]);
}
public void Input1(bool in1) { Input(0, in1); }
public void Input2(bool in2) { Input(1, in2); }
public override string ToString() => $"[{me}]: {out1}";
}
class AndGate : LogicElement
{
public AndGate(string me) : base(2, me) { }
public override bool Logic(bool in1, bool in2) => in1 && in2 ? true : false;
}
class OrGate : LogicElement
{
public OrGate(string me) : base(2, me) { }
public override bool Logic(bool in1, bool in2) => in1 == false && in2 == false ? false : true;
}
class NotGate : LogicElement
{
public NotGate(string me) : base(1, me) { }
public override bool Logic(bool in1, bool in2) => !in1;
}
class Port : LogicElement
{
public Port(string me) : base(1, me) { }
public bool Input { set { Input1(value); } }
public override bool Logic(bool in1, bool in2) => in1;
}
class HalfAdder
{
public Port portX = new Port("x");
public Port portY = new Port("y");
public AndGate carry = new AndGate("cy ");
public OrGate sum = new OrGate("sum");
string me;
NotGate notX = new NotGate("nx");
NotGate notY = new NotGate("ny");
AndGate a1 = new AndGate("a1");
AndGate a2 = new AndGate("a2");
public HalfAdder(string me)
{
this.me = me;
portX.Output += notX.Input1;
portX.Output += a2.Input1;
portX.Output += carry.Input1;
portY.Output += notY.Input1;
portY.Output += a1.Input2;
portY.Output += carry.Input2;
notX.Output += a1.Input1;
notY.Output += a2.Input2;
a1.Output += sum.Input1;
a2.Output += sum.Input2;
}
}
class FullAdder
{
public Port portA = new Port("a");
public Port portB = new Port("b");
public Port portC = new Port("cIn");
private HalfAdder FAsum = new HalfAdder("sum");
private HalfAdder ha1 = new HalfAdder("HA");
private OrGate carry = new OrGate("cy ");
private string me;
public FullAdder(string me)
{
this.me = me;
portA.Output += ha1.portX.Input1;
portB.Output += ha1.portY.Input1;
portC.Output += FAsum.portX.Input1;
ha1.carry.Output += carry.Input2;
ha1.sum.Output += FAsum.portY.Input1;
portC.Output += FAsum.portX.Input1;
FAsum.carry.Output += carry.Input1;
}
class Program
{
static void Main(string[] args)
{
FullAdder fa = new FullAdder("FA");
fa.portA.Input = false;
fa.portB.Input = true;
fa.portC.Input = false;
Console.WriteLine($"\n{ fa.FAsum.sum,12} | {fa.carry}");
fa.portC.Input = true;
Console.WriteLine($"\n{ fa.FAsum.sum,12} | {fa.carry}");
fa.portA.Input = true;
Console.WriteLine($"\n{ fa.FAsum.sum,12} | {fa.carry}");
}
}
}
}
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v3.1",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v3.1": {
"12Delegateaufrufausbreitung/1.0.0": {
"runtime": {
"12Delegateaufrufausbreitung.dll": {}
}
}
}
},
"libraries": {
"12Delegateaufrufausbreitung/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
}
}
}
\ No newline at end of file
{
"runtimeOptions": {
"additionalProbingPaths": [
"C:\\Users\\wienkop\\.dotnet\\store\\|arch|\\|tfm|",
"C:\\Users\\wienkop\\.nuget\\packages"
]
}
}
\ No newline at end of file
{
"runtimeOptions": {
"tfm": "netcoreapp3.1",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "3.1.0"
}
}
}
\ No newline at end of file
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v3.1",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v3.1": {
"SS2020Test/1.0.0": {
"runtime": {
"SS2020Test.dll": {}
}
}
}
},
"libraries": {
"SS2020Test/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
}
}
}
\ No newline at end of file
{
"runtimeOptions": {
"additionalProbingPaths": [
"C:\\Users\\wienkop\\.dotnet\\store\\|arch|\\|tfm|",
"C:\\Users\\wienkop\\.nuget\\packages"
]
}
}
\ No newline at end of file
{
"runtimeOptions": {
"tfm": "netcoreapp3.1",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "3.1.0"
}
}
}
\ No newline at end of file
{
"format": 1,
"restore": {
"C:\\Users\\wienkop\\source\\repos\\prog2-ss2020-wienkop\\12Delegateaufrufausbreitung\\12Delegateaufrufausbreitung.csproj": {}
},
"projects": {
"C:\\Users\\wienkop\\source\\repos\\prog2-ss2020-wienkop\\12Delegateaufrufausbreitung\\12Delegateaufrufausbreitung.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\wienkop\\source\\repos\\prog2-ss2020-wienkop\\12Delegateaufrufausbreitung\\12Delegateaufrufausbreitung.csproj",
"projectName": "12Delegateaufrufausbreitung",
"projectPath": "C:\\Users\\wienkop\\source\\repos\\prog2-ss2020-wienkop\\12Delegateaufrufausbreitung\\12Delegateaufrufausbreitung.csproj",
"packagesPath": "C:\\Users\\wienkop\\.nuget\\packages\\",
"outputPath": "C:\\Users\\wienkop\\source\\repos\\prog2-ss2020-wienkop\\12Delegateaufrufausbreitung\\obj\\",
"projectStyle": "PackageReference",
"configFilePaths": [
"C:\\Users\\wienkop\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"netcoreapp3.1"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"netcoreapp3.1": {
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
}
},
"frameworks": {
"netcoreapp3.1": {
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\3.1.301\\RuntimeIdentifierGraph.json"
}
}
}
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\wienkop\.nuget\packages\</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">5.6.0</NuGetToolVersion>
</PropertyGroup>
<PropertyGroup>
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
</PropertyGroup>
</Project>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
</PropertyGroup>
</Project>
\ No newline at end of file
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v3.1", FrameworkDisplayName = "")]
//------------------------------------------------------------------------------
// <auto-generated>
// Dieser Code wurde von einem Tool generiert.
// Laufzeitversion:4.0.30319.42000
//
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
// der Code erneut generiert wird.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("12Delegateaufrufausbreitung")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("12Delegateaufrufausbreitung")]
[assembly: System.Reflection.AssemblyTitleAttribute("12Delegateaufrufausbreitung")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Von der MSBuild WriteCodeFragment-Klasse generiert.
C:\Users\wienkop\source\repos\prog2-ss2020-wienkop\12Delegateaufrufausbreitung\bin\Debug\netcoreapp3.1\12Delegateaufrufausbreitung.exe
C:\Users\wienkop\source\repos\prog2-ss2020-wienkop\12Delegateaufrufausbreitung\bin\Debug\netcoreapp3.1\12Delegateaufrufausbreitung.deps.json
C:\Users\wienkop\source\repos\prog2-ss2020-wienkop\12Delegateaufrufausbreitung\bin\Debug\netcoreapp3.1\12Delegateaufrufausbreitung.runtimeconfig.json
C:\Users\wienkop\source\repos\prog2-ss2020-wienkop\12Delegateaufrufausbreitung\bin\Debug\netcoreapp3.1\12Delegateaufrufausbreitung.runtimeconfig.dev.json
C:\Users\wienkop\source\repos\prog2-ss2020-wienkop\12Delegateaufrufausbreitung\bin\Debug\netcoreapp3.1\12Delegateaufrufausbreitung.dll
C:\Users\wienkop\source\repos\prog2-ss2020-wienkop\12Delegateaufrufausbreitung\bin\Debug\netcoreapp3.1\12Delegateaufrufausbreitung.pdb
C:\Users\wienkop\source\repos\prog2-ss2020-wienkop\12Delegateaufrufausbreitung\obj\Debug\netcoreapp3.1\12Delegateaufrufausbreitung.AssemblyInfoInputs.cache
C:\Users\wienkop\source\repos\prog2-ss2020-wienkop\12Delegateaufrufausbreitung\obj\Debug\netcoreapp3.1\12Delegateaufrufausbreitung.AssemblyInfo.cs
C:\Users\wienkop\source\repos\prog2-ss2020-wienkop\12Delegateaufrufausbreitung\obj\Debug\netcoreapp3.1\12Delegateaufrufausbreitung.csproj.CoreCompileInputs.cache
C:\Users\wienkop\source\repos\prog2-ss2020-wienkop\12Delegateaufrufausbreitung\obj\Debug\netcoreapp3.1\12Delegateaufrufausbreitung.dll
C:\Users\wienkop\source\repos\prog2-ss2020-wienkop\12Delegateaufrufausbreitung\obj\Debug\netcoreapp3.1\12Delegateaufrufausbreitung.pdb
C:\Users\wienkop\source\repos\prog2-ss2020-wienkop\12Delegateaufrufausbreitung\obj\Debug\netcoreapp3.1\12Delegateaufrufausbreitung.genruntimeconfig.cache
//------------------------------------------------------------------------------
// <auto-generated>
// Dieser Code wurde von einem Tool generiert.
// Laufzeitversion:4.0.30319.42000
//
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
// der Code erneut generiert wird.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("SS2020Test")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("SS2020Test")]
[assembly: System.Reflection.AssemblyTitleAttribute("SS2020Test")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Von der MSBuild WriteCodeFragment-Klasse generiert.
D:\Dokumente\Visual Studio Projects\Programmieren\Prüfungen\SS2020Test\bin\Debug\netcoreapp3.1\SS2020Test.exe
D:\Dokumente\Visual Studio Projects\Programmieren\Prüfungen\SS2020Test\bin\Debug\netcoreapp3.1\SS2020Test.deps.json
D:\Dokumente\Visual Studio Projects\Programmieren\Prüfungen\SS2020Test\bin\Debug\netcoreapp3.1\SS2020Test.runtimeconfig.json
D:\Dokumente\Visual Studio Projects\Programmieren\Prüfungen\SS2020Test\bin\Debug\netcoreapp3.1\SS2020Test.runtimeconfig.dev.json
D:\Dokumente\Visual Studio Projects\Programmieren\Prüfungen\SS2020Test\bin\Debug\netcoreapp3.1\SS2020Test.dll
D:\Dokumente\Visual Studio Projects\Programmieren\Prüfungen\SS2020Test\bin\Debug\netcoreapp3.1\SS2020Test.pdb
D:\Dokumente\Visual Studio Projects\Programmieren\Prüfungen\SS2020Test\obj\Debug\netcoreapp3.1\SS2020Test.csprojAssemblyReference.cache
D:\Dokumente\Visual Studio Projects\Programmieren\Prüfungen\SS2020Test\obj\Debug\netcoreapp3.1\SS2020Test.AssemblyInfoInputs.cache
D:\Dokumente\Visual Studio Projects\Programmieren\Prüfungen\SS2020Test\obj\Debug\netcoreapp3.1\SS2020Test.AssemblyInfo.cs
D:\Dokumente\Visual Studio Projects\Programmieren\Prüfungen\SS2020Test\obj\Debug\netcoreapp3.1\SS2020Test.csproj.CoreCompileInputs.cache