====== C# Programmierübungen ====== **Diese Seite wird nicht mehr gepflegt. Schau bei den [[Programmierübungen]] nach.** ===== Übungen zu Schleifen ===== Bei den folgenden Aufgaben ist die Lösung mit einer for-Schleife einfach zu erstellen. Kannst du sie auch mit einer while-Schleife lösen? Für Profis, dich sich mit [[wpde>Rekursion]] auskennen: Man kann die Aufgaben sogar komplett ohne Schleife lösen. ==== Zahlen bis maximum ==== Von der Tastatur wird eine Zahl ''maximum'' eingelesen. Anschließend gibt das Programm alle Zahlen von 1 bis ''maximum'' aus. Eingabe: 8 Ausgabe: 1, 2, 3, 4, 5, 6, 7, 8 ==== Gerade Zahlen ==== Von der Tastatur wird eine Zahl ''maximum'' eingelesen. Anschließend gibt das Programm alle geraden Zahlen von 0 bis ''maximum'' aus. Eingabe: 6 Ausgabe: 0, 2, 4, 6 ==== FizzBuzz ==== Bei dem FizzBuzz-Spiel werden die Zahlen von 1 bis 100 durchlaufen. Nun können folgende Fälle eintreten: - Wenn die Zahl durch 3 teilbar ist, wird "Fizz" ausgegeben - wenn sie durch 5 teilbar ist, wird "Buzz" ausgegeben und - wenn sie durch 3 und 5 teilbar ist, wird "FizzBuzz" ausgegeben. - Tritt keiner dieser Fälle ein, wird die Zahl ausgegeben. Ob eine Zahl durch eine andere Zahl teilbar ist, kann mit Hilfe des [[http://openbook.rheinwerk-verlag.de/visual_csharp_2012/1997_02_004.html|Modulo-Operators (oder Restwert-Operator)]] ''%'' herausgefunden werden. Er berechnet den Divisionsrest: ''10 % 3'' ist 1, da 10 geteilt durch 3 genau 3 Rest 1 ergibt. Die ersten 20 Ausgaben sehen wir folgt aus: 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz ==== Hoch- und Runterzählen ==== Das Programm gibt die Zahlen von 1 bis 10 und dahinter die Zahlen von 10 bis 1 aus. Es zählt also einmal rauf und dann wieder runter. Versuche, nur //eine// for-Schleife zu verwenden. Ausgabe: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 ==== Sternenreihe ==== Schreiben Sie ein Programm, das zunächst die Eingabe einer positiven Zahl ''anzahl'' über die Tastatur erwartet. Anschließend soll das Programm anzahl-mal ein Sternchen (*) auf den Bildschirm ausgeben. Beispielablauf des Programms (Benutzereingaben in <>): Anzahl (>0): <8> ******** ==== Sternentreppe ==== Schreiben Sie ein Programm, das nach Eingabe einer positiven Zahl ''hoehe'' eine Treppe der im folgenden Beispielprogramm skizzierten Form auf den Bildschirm ausgibt. Die Treppe soll aus hoehe-Zeilen bestehen. Beispielablauf des Programms (Benutzereingaben in <>): Hoehe (>0): <5> * ** *** **** ***** ==== Sternendreieck ==== Schreiben Sie ein Programm, das nach Eingabe einer ungeraden Zahl ''basislaenge'' ein Sterndreieck auf den Bildschirm ausgibt. Die unterste Reihe soll dabei aus ''basislaenge'' Sternchen bestehen. Beispielablauf des Programms (Benutzereingaben in <>): Basislaenge (>0 und ungerade): <9> * *** ***** ******* ********* ===== BMI-Rechner ===== Der [[wpde>Body-Mass-Index]] (BMI) ist eine Maßzahl für die Bewertung des Körpergewichts eines Menschen. Der BMI berechnet sich aus dem Körpergewicht [kg] dividiert durch das Quadrat der Körpergröße [m²]. Die Formel lautet: BMI = Körpergewicht / (Körpergröße in m)². Die Einheit des BMI ist demnach kg/m². Implementieren Sie einen BMI-Rechner. Beispielablauf des Programms (Benutzereingaben in <>): Bitte geben Sie Ihr Gewicht ein (in kg): <75> Bitte geben Sie ihre Größe ein (in m): <1.81> BMI = 22.89307408198773 ===== Notenrechner ===== {{:schule:prog:ihk-notenrechner.png?nolink|}} Der Notenrechner berechnet die Note bei Eingabe der Gesamtpunktzahl und der erreichten Punkte nach dem IHK-Schlüssel. ^Note^ab ^ |1 | 92% | |2 | 81% | |3 | 67% | |4 | 50% | |5 | 30% | ===== Zahlenraten ===== Bei dem Spiel Zahlenraten geht es darum, möglichst schnell eine Zahl zwischen 0 und 100 zu erraten, die sich der Computer zufällig ausgedacht hat. Man kann dem Computer immer wieder eine Zahl nennen und er antwortet jeweils mit //Die gesuchte Zahl ist kleiner// oder //Die gesuchte Zahl ist größer// oder //Richtig geraten//. Erstelle ein Programm, mit dem du das Spiel gegen den Computer spielen kann. __Tipp:__ Eine Zufallszahl kann man mit der Klasse ''[[https://msdn.microsoft.com/library/System.Random.aspx|Random]]'' wie folgt erzeugen: Random ranZufallszahlen = new Random(); // Gibt eine Zufallszahl zurück, die in einem angegebenen Bereich liegt. // Der Zahlen stammen aus dem Bereich von 0 bis 100 ranZufallszahlen.Next(0, 101); // 60 ranZufallszahlen.Next(0, 101); // 24 ranZufallszahlen.Next(0, 101); // 47 ===== IBAN-Prüfsumme ===== Die [[wpde>IBAN]] ist eine international standardisierte Notation für Bankkontonummern. Ein Beispiel seht ihr hier. DE**68** 2105 0170 0012 3456 78 Sie wird z.B. bei Überweisungen verwendet, um das Empfängerkonto anzugeben. Diese IBAN hat im vorderen Bereich zwei Prüfziffern, mit denen geprüft werden kann, ob die IBAN korrekt eingetragen wurde. - Schaue dir den [[wpde>IBAN#Validierung_der_Pr.C3.BCfsumme|Abschnitt zur Validierung der Prüfsumme]] an. - Schreibe ein Programm, das eine IBAN überprüft und ausgibt, ob eine eingegebene IBAN korrekt ist oder nicht. - (schwieriger) Schreibe ein Programm, dass eine Prüfziffer berechnet. //Tipp:// Wenn die Zahl groß wird, brauchst du einen anderen Datentyp als ''int''((Verwende für große Zahlen den Datentyp ''decimal''.)). ===== Programm, das den eigenen Quelltext ausgibt ===== Schreibe ein Programm, das den eigenen Quelltext ausgibt. Dabei darf nicht auf Dateioperationen zurückgegriffen werden. Sonst wäre es zu einfach. Dann könnte man einfach nur die Datei ausgeben, die den Quelltext enthält. Das schöne an dieser Aufgabenstellung ist, dass sie zunächst sehr einfach und nach ein paar Versuchen faktisch unmöglich erscheint. Versuche dich selbst an einem C#-Programm, das den eigenen Quelltext ausgibt. Wenn du keinen Ansatz findest, kann du den (unvollständigen) Quelltext aus der Fußnote(( class MainClass{ static string[] daten = { " public static void Main(string[] args) {", " Console.WriteLine(\"class MainClass{\");", // ... "}" }; public static void Main(string[] args) { Console.WriteLine("class MainClass{"); // .. } } )) nutzen. ===== Links ===== * [[https://projecteuler.net/|Project Euler]] ist eine Sammlung mathematischer Aufgaben und Programmierübungen für unterschiedliche Programmiersprachen. Es gibt viele Lösungen, die in einem Forum gesammelt werden. * [[https://www.codehunt.com/|Code Hunt]] ist ein Spiel von Microsoft, das hilft, die Programmiersprache C# zu lernen. * Wer der englischen Sprache mächtig ist, findet bei [[http://rosettacode.org/wiki/Category:Programming_Tasks|RosettaCode]] eine Vielzahl von Programmieraufgaben inklusive Lösungen in vielen verschiedenen Programmiersprachen. ---- [[privat:C-sharp_Programmierübungen-Lösungen|Lösungen]]