Übungen / Aufgaben zu Objective-C
0 Lösungen
Programmiere ein kleines Banksystem
Programmiere ein kleines Banksystem!
GUI nicht notwendig. Aber:
Biete mehrere Auswahlmöglichkeiten bezüglich der Erstellung eines neuen Kontos, dem bearbeiten eines existierenden Kontos, dem Löschens eines bestehenden Kontos und dem Ausgeben aller Konten in sortierter Reihenfolge (nach Realgeld, siehe weiter unten)
Konten sollen einen Inhaber samt Namen (ggf. Alter) , einen Kontostand, einen Möglichen Kreditrahmen, eine laufende Kreditsumme und das Realgeld besitzen (Realgeld entspricht Kontostand abzüglich des durch Kredit vorhandenen Geldes).
Verwende Private Variablen, Getter und Setter
Nicht alle Konten dürfen einen Kredit besitzen (erst ab 18!)
Bezüglich der Auswahlmöglichkeiten: Diese sollen per Texteingabe oder Button auswählbar sein, und bei Auswahl vertiefende Fragen stellen (vertierendere Auswahlmöglichkeiten bieten) .. z.B. bei bearbeiten eines Kontos "Welches Konto", dann noch tiefer "Welche Eigenschaft", "Welcher Wert".
Das ganze soll dann wieder zum Ursprung springen und die selben Möglichkeiten bieten --> Solange, bis der Benutzer das Programm durch einen bestimmten Text, ein Zeichen, oder einen Button im GUI beendet.
GUI nicht notwendig. Aber:
Biete mehrere Auswahlmöglichkeiten bezüglich der Erstellung eines neuen Kontos, dem bearbeiten eines existierenden Kontos, dem Löschens eines bestehenden Kontos und dem Ausgeben aller Konten in sortierter Reihenfolge (nach Realgeld, siehe weiter unten)
Konten sollen einen Inhaber samt Namen (ggf. Alter) , einen Kontostand, einen Möglichen Kreditrahmen, eine laufende Kreditsumme und das Realgeld besitzen (Realgeld entspricht Kontostand abzüglich des durch Kredit vorhandenen Geldes).
Verwende Private Variablen, Getter und Setter
Nicht alle Konten dürfen einen Kredit besitzen (erst ab 18!)
Bezüglich der Auswahlmöglichkeiten: Diese sollen per Texteingabe oder Button auswählbar sein, und bei Auswahl vertiefende Fragen stellen (vertierendere Auswahlmöglichkeiten bieten) .. z.B. bei bearbeiten eines Kontos "Welches Konto", dann noch tiefer "Welche Eigenschaft", "Welcher Wert".
Das ganze soll dann wieder zum Ursprung springen und die selben Möglichkeiten bieten --> Solange, bis der Benutzer das Programm durch einen bestimmten Text, ein Zeichen, oder einen Button im GUI beendet.
0 Lösungen
Google Calendar API - Events auslesen - Event löschen - Event hinzufügen
Erstelle ein Programm welches als CronJob nutzbar ist, einen GoogleKalender ausliest und den Eventnamen mit Beginn des Termins ausgibt.
Danach soll das 1. Event gelöscht werden, ein neues Event hinzugefügt werden und der Google Kalender über die API aktualisiert werden.
Danach soll das 1. Event gelöscht werden, ein neues Event hinzugefügt werden und der Google Kalender über die API aktualisiert werden.
0 Lösungen
Spielerei mit der Zahl 2017
Die Zahl 2017 wird uns in diesem Jahr sicherlich besonders häufig begegnen.
Eine Besonderheit von ihr: sie ist eine Primzahl, was sicherlich die Zahlenmystiker wachrütteln wird.
Nun gut, was kann man mit 2017 noch so anfangen? Z. B. könnte man ihre vier Digits (2, 0, 1, 7)
untereinander vertauschen und so neue Zahlen erzeugen (z. B. 217, 7102 usw.).
Man könnte auch folgendermaßen neue Zahlen erzeugen: Zwischen jeweils zwei Digits
wird einer der folgenden Operatoren geschrieben: '+', '-', '*', '/' oder 'join'.
Die ersten vier Operatoren stehen für Addition, Subtraktion, Multiplikation und Division.
Der Operator 'join' steht für "Zahlenverbinder" , z. B.
2 + 0 + 1 join 7 = 2 + 0 + 17 = 19 oder
1 + 7 join 0 * 2 = 1 + 70 * 2 = 141
und hat die höchste Priorität (gefolgt von '*', '/' und '+', '-', wie üblich).
Möglich ist auch das:
7 / 2 + 0 * 1 = 3.5 oder
2 / 0 + 1 * 7 = unendlich
etc.
Folgende Aufgabenstellung:
Auf Basis der vier Digits (2, 0, 1, 7)
und der fünf Operatoren ('+', '-', '*', '/', ' ') [das Leerzeichen ' ' stehe für 'join']
sind alle möglichen Natürliche Zahlen (inc. Null) entsprechend obiger Beispiele zu erzeugen,
wobei die vier Digits jeweils einmal vorkommen müssen.
Die Operatoren können mehrfach verwendet werden (z. B. 1 + 0 * 2 + 7 = 8).
Eine Klammersetzung (z. B. (1 + 0) * 2 + 7 = 9) ist nicht erlaubt (bzw. optional, wer es weiter verkomplizieren möchte).
Beispiele:
0 = 0 * 217 = 72 * 1 * 0 = ...
...
3 = 2 + 1 + 0 * 7 = 1 + 2 + 0 * 7 = 1 + 7 * 0 + 2 etc.
Frage:
Welches ist die kleinste Natürliche Zahl, die auf diese Weise nicht dargestellt werden kann?
Anmerkung:
Bei den Zahlen zwischen 0 und 100 gibt es immerhin 58, die laut Aufgabenstellung mittels 2017 nicht darstellbar sind.
Dagegen lässt sich z. B. die 9 auf 126 verschiedene Arten berechnen (bei Umgehung des Kommutativgesetzes).
Eine Besonderheit von ihr: sie ist eine Primzahl, was sicherlich die Zahlenmystiker wachrütteln wird.
Nun gut, was kann man mit 2017 noch so anfangen? Z. B. könnte man ihre vier Digits (2, 0, 1, 7)
untereinander vertauschen und so neue Zahlen erzeugen (z. B. 217, 7102 usw.).
Man könnte auch folgendermaßen neue Zahlen erzeugen: Zwischen jeweils zwei Digits
wird einer der folgenden Operatoren geschrieben: '+', '-', '*', '/' oder 'join'.
Die ersten vier Operatoren stehen für Addition, Subtraktion, Multiplikation und Division.
Der Operator 'join' steht für "Zahlenverbinder" , z. B.
2 + 0 + 1 join 7 = 2 + 0 + 17 = 19 oder
1 + 7 join 0 * 2 = 1 + 70 * 2 = 141
und hat die höchste Priorität (gefolgt von '*', '/' und '+', '-', wie üblich).
Möglich ist auch das:
7 / 2 + 0 * 1 = 3.5 oder
2 / 0 + 1 * 7 = unendlich
etc.
Folgende Aufgabenstellung:
Auf Basis der vier Digits (2, 0, 1, 7)
und der fünf Operatoren ('+', '-', '*', '/', ' ') [das Leerzeichen ' ' stehe für 'join']
sind alle möglichen Natürliche Zahlen (inc. Null) entsprechend obiger Beispiele zu erzeugen,
wobei die vier Digits jeweils einmal vorkommen müssen.
Die Operatoren können mehrfach verwendet werden (z. B. 1 + 0 * 2 + 7 = 8).
Eine Klammersetzung (z. B. (1 + 0) * 2 + 7 = 9) ist nicht erlaubt (bzw. optional, wer es weiter verkomplizieren möchte).
Beispiele:
0 = 0 * 217 = 72 * 1 * 0 = ...
...
3 = 2 + 1 + 0 * 7 = 1 + 2 + 0 * 7 = 1 + 7 * 0 + 2 etc.
Frage:
Welches ist die kleinste Natürliche Zahl, die auf diese Weise nicht dargestellt werden kann?
Anmerkung:
Bei den Zahlen zwischen 0 und 100 gibt es immerhin 58, die laut Aufgabenstellung mittels 2017 nicht darstellbar sind.
Dagegen lässt sich z. B. die 9 auf 126 verschiedene Arten berechnen (bei Umgehung des Kommutativgesetzes).
0 Lösungen
Überprüfen von Email Adressen
Hintergrund:
Angenommen du hast eine Internetadresse und sammelst dort Emails über ein Newsletter anmelden Formular ein.
Dadurch generierst eine Zahl x an Email Adressen aller Art.
Das Ziel ist nun zu bestimmen, Eigenschaften deiner Adressen auszuwerten. Typische Fragen sind hier beispielsweise Verteilung der Geschlechter, Alter?
Daher soll ein Programm geschrieben werden, welches eine Liste mit Email-Adressen entgegen nimmt und dann folgende Eigenschaften ausgibt:
* Valide Email? ( Ist es überhaupt eine Email...)
* Domain
* Land der Domain
* Email enthält Zahlen?
* Geburtsjahr?
* ... ( Gibt sicher noch einige spannende Eigenschaften.. Up to you!)
Optional:
* Geschlecht?
Anmerkung: Der Prozess muss nicht perfekt sein.
Angenommen du hast eine Internetadresse und sammelst dort Emails über ein Newsletter anmelden Formular ein.
Dadurch generierst eine Zahl x an Email Adressen aller Art.
Das Ziel ist nun zu bestimmen, Eigenschaften deiner Adressen auszuwerten. Typische Fragen sind hier beispielsweise Verteilung der Geschlechter, Alter?
Daher soll ein Programm geschrieben werden, welches eine Liste mit Email-Adressen entgegen nimmt und dann folgende Eigenschaften ausgibt:
* Valide Email? ( Ist es überhaupt eine Email...)
* Domain
* Land der Domain
* Email enthält Zahlen?
* Geburtsjahr?
* ... ( Gibt sicher noch einige spannende Eigenschaften.. Up to you!)
Optional:
* Geschlecht?
Anmerkung: Der Prozess muss nicht perfekt sein.
0 Lösungen
Berechnung und Ausgabe einer Zahlen-Schnecke
Das Programm soll eine Ganzzahl (int) entgegen nehmen und berechnen ob eine Zahlen-Schnecke (wie auf einem Brettspiel) mit dieser Anzahl an Feldern bzw. höchsten Zahl möglich ist und gegebenfalls in einer einfachen Form (z.B. in Konsole oder Textdatei) ausgeben.
Die Zeilen- und Spaltenanzahl muss nicht gleich groß sein.
Option: Die Zahl 0 soll je nachdem ob sie für eine Durchführung benötigt wird, eingefügt oder weggelassen werden.
Erweiterung: Lass den Benutzer auswählen, ob die Schnecke sich im oder gegen den Uhrzeigersinn dreht.
Beispielausgabe:
PS: Hat diese Art einer Schnecke eine andere Bezeichnung?
Die Zeilen- und Spaltenanzahl muss nicht gleich groß sein.
Option: Die Zahl 0 soll je nachdem ob sie für eine Durchführung benötigt wird, eingefügt oder weggelassen werden.
Erweiterung: Lass den Benutzer auswählen, ob die Schnecke sich im oder gegen den Uhrzeigersinn dreht.
Beispielausgabe:
Konsolenausgabe:
Höchste Zahl der Zahlenschnecke: 19
0 1 2 3 4
13 14 15 16 5
12 19 18 17 6
11 10 9 8 7
Höchste Zahl der Zahlenschnecke: 2
Fehler: Die Zahl 2 ist zu klein für eine Zahlenschnecke
PS: Hat diese Art einer Schnecke eine andere Bezeichnung?
0 Lösungen
Standort einer beliebigen Ip-Adresse
In Python Aufgabe 101 ( https://trainyourprogrammer.de/python-101-ermitteln-der-ip-klasse.html)
war die Aufgabenstellung für die eingegebene IP die Klasse zu bestimmen.
Viel spannender ist ( aus meiner Sicht) der Standort des Servers:
Nutzt die API https://freegeoip.net/ um den Standort der eingebenen Ip-Adresse ausgeben wird.
Beispiel:
Eingabe = 66.249.66.1
Ausgabe = Die Ip 66.249.66.1 befindet sich in dem Land US in der Stadt Mountain View, die Geo Koordinaten sind 37.4192,-122.0574
p.s. Die Beispiel Ip ist die Ip des Google Bots ;)
war die Aufgabenstellung für die eingegebene IP die Klasse zu bestimmen.
Viel spannender ist ( aus meiner Sicht) der Standort des Servers:
Nutzt die API https://freegeoip.net/ um den Standort der eingebenen Ip-Adresse ausgeben wird.
Beispiel:
Eingabe = 66.249.66.1
Ausgabe = Die Ip 66.249.66.1 befindet sich in dem Land US in der Stadt Mountain View, die Geo Koordinaten sind 37.4192,-122.0574
p.s. Die Beispiel Ip ist die Ip des Google Bots ;)
0 Lösungen
Wörterzählen in Textdateien
Man schreibe ein Programm, das bei einer beliebigen Textdatei (ASCII)
a) alle Wörter und
b) alle unterschiedlichen Wörter der Längen 1, 2, 3 ... zählt, wobei zwischen Groß- und Kleinbuchstaben nicht zu unterscheiden sei.
Als Wörter-Trennzeichen sind zu verwenden:
a) alle Sonderzeichen (' ', '.', ',', tab ...) sowie Zahlen (0, 1 ... 9) und
b) alle Chars, die nicht zum Aphabet (abc...xyzäöü) gehören (damit wäre a) bereits automatisch erfüllt).
Anmerkungen:
a) Es gibt auch im Deutschen Wörter der Länge 1, z. B. in "a tempo" oder " a priori" oder bei Abkürzungen ("z. B.").
b) Als Beispieltext kann von hier die komplette Bibelausgabe nach Martin Luther 1912 als ASCII-Datei heruntergeladen und verwendet werden (ist mit 4 MB zu lang als Anhang hier, selbst als *.rar noch ca. 1.2 MB).
Viel Spaß und schöne Weihnachten sowie einen guten Rutsch und Start in 2017.
a) alle Wörter und
b) alle unterschiedlichen Wörter der Längen 1, 2, 3 ... zählt, wobei zwischen Groß- und Kleinbuchstaben nicht zu unterscheiden sei.
Als Wörter-Trennzeichen sind zu verwenden:
a) alle Sonderzeichen (' ', '.', ',', tab ...) sowie Zahlen (0, 1 ... 9) und
b) alle Chars, die nicht zum Aphabet (abc...xyzäöü) gehören (damit wäre a) bereits automatisch erfüllt).
Anmerkungen:
a) Es gibt auch im Deutschen Wörter der Länge 1, z. B. in "a tempo" oder " a priori" oder bei Abkürzungen ("z. B.").
b) Als Beispieltext kann von hier die komplette Bibelausgabe nach Martin Luther 1912 als ASCII-Datei heruntergeladen und verwendet werden (ist mit 4 MB zu lang als Anhang hier, selbst als *.rar noch ca. 1.2 MB).
Viel Spaß und schöne Weihnachten sowie einen guten Rutsch und Start in 2017.
0 Lösungen
Fibonacci-Zahlen bis 100 ausgeben
Schreibe Code, der die Fibonacci-Zahlen bis 100 ausgibt. Die Fibonacci-Zahlen kommen dadurch zustande, dass 2 aufeinanderfolgende Zahlen addiert werden, zb.: 0 + 1 = 2 --> 1 + 2 = 3 --> 2 + 3 = 5 --> 3 + 5 = 8.....
Viel Erfolg!!!
Viel Erfolg!!!
0 Lösungen
Bearbeiten & Speichern von CSV Dateien
Das Ziel ist die automatische Verarbeitung von CSV Dateien.
Eine typische Anwendung ist die Anbindung an eine externe API, die eine CSV bei jeden Aufruf zurückgibt. Diese CSV wird in der Regel noch verarbeitet bevor sie in eine Datenbank geladen wird.
The programm should have following functions:
* generate a random csv with a given lenght ( number of rows and columns)
* read and write csv files from a directory
* remove columns
* add the new column "hash" which should be the MD5 hash of all given columns. Note the column is different for all rows.
* add the new column "request_tstamp" which should be the current time, the value should be the same for all rows.
* transform all values of given column in the way that '.' is replaced by ',' or '€' by an empty string
Eine typische Anwendung ist die Anbindung an eine externe API, die eine CSV bei jeden Aufruf zurückgibt. Diese CSV wird in der Regel noch verarbeitet bevor sie in eine Datenbank geladen wird.
The programm should have following functions:
* generate a random csv with a given lenght ( number of rows and columns)
* read and write csv files from a directory
* remove columns
* add the new column "hash" which should be the MD5 hash of all given columns. Note the column is different for all rows.
* add the new column "request_tstamp" which should be the current time, the value should be the same for all rows.
* transform all values of given column in the way that '.' is replaced by ',' or '€' by an empty string
0 Lösungen
Regelmäßiges Runterladen und Abspeichern von Dateien
Eine Firma X stellt euch einen FTP Zugang (ggf. mit Zugang + PW ) zur Verfügung, wo sie jeden Tag eine Datei xyz.txt updaten und mit den aktuellsten Datensätzen befüllen.
Im ersten Schritt sollen diese Dateien heruntergeladen werden und dann auch in einem Ordner auf der Festplatte abgelegt werden.
Zum Wiedererkennen soll sowohl die Quelle als auch der Zeitpunkt des Downloads abgespeichert werden:
mögliche Beispiele:
* Zielorder > File 'FTP_x_xzy_2016_12_24.txt'
* Zielorder > Ordername '2016-12-24' > File 'xyz.txt'
Wichtig: Die Ablage muss sauber strukturiert sein.
Anmerkung: Da ich euch keinen FTP zur Verfügung stelle und wenn ihr keinen eigenen zum Testen habt:
Stattdessen ladet doch einfach den Inhalt von https://trainyourprogrammer.de/python herunter.
Optional:
* Erweitert das Programm so, dass es alle Dateien auf dem FTP herunterlädt.
* Alternativ: Speichert den Inhalt von alle verfügbaren Python Aufgaben Seiten herunter?
Im ersten Schritt sollen diese Dateien heruntergeladen werden und dann auch in einem Ordner auf der Festplatte abgelegt werden.
Zum Wiedererkennen soll sowohl die Quelle als auch der Zeitpunkt des Downloads abgespeichert werden:
mögliche Beispiele:
* Zielorder > File 'FTP_x_xzy_2016_12_24.txt'
* Zielorder > Ordername '2016-12-24' > File 'xyz.txt'
Wichtig: Die Ablage muss sauber strukturiert sein.
Anmerkung: Da ich euch keinen FTP zur Verfügung stelle und wenn ihr keinen eigenen zum Testen habt:
Stattdessen ladet doch einfach den Inhalt von https://trainyourprogrammer.de/python herunter.
Optional:
* Erweitert das Programm so, dass es alle Dateien auf dem FTP herunterlädt.
* Alternativ: Speichert den Inhalt von alle verfügbaren Python Aufgaben Seiten herunter?
0 Lösungen
Mehrdimensionale Arrays
Sie sollen ein C Programm schreiben, welches eine 4x4 Matrix um 90° nach rechts dreht. Eine Drehung soll somit folgendermaßen aussehen:
a11 a12 a13 a14
a21 a22 a23 a24
a31 a32 a33 a34
a41 a42 a43 a44
wird zu
a41 a31 a21 a11
a42 a32 a22 a12
a43 a33 a23 a13
a44 a34 a24 a14
Folgende Matrizen sollen Sie insgesamt 4 mal drehen:
Die Matrizen sollen insgesamt 5 mal ausgegeben werden, einmal bevor eine Drehung durchgeführt wurde und anschließend nach jeder Drehung (die letzte Ausgabe entspricht also der ersten Ausgabe).
Als Trennzeichen dienen ein Leerzeichen zwischen den einzelnen Symbolen innerhalb einer Matrix, zwei Leerzeichen zwischen zwei horizontal angeordnete Matrizen und eine Leerzeile zwischen den einzelnen Versionen. Beachten Sie das Fehlen von abschließenden Leerzeichen nach der letzten Matrize. Siehe dazu auch die Beispielausgabe.
a11 a12 a13 a14
a21 a22 a23 a24
a31 a32 a33 a34
a41 a42 a43 a44
wird zu
a41 a31 a21 a11
a42 a32 a22 a12
a43 a33 a23 a13
a44 a34 a24 a14
Folgende Matrizen sollen Sie insgesamt 4 mal drehen:
- - - - - - - - - - - - - - o -
- o - - - o o - - o - - - - o -
o o o - o o - - - o - - - - o -
- - - - - - - - - o o - - - o -
Die Matrizen sollen insgesamt 5 mal ausgegeben werden, einmal bevor eine Drehung durchgeführt wurde und anschließend nach jeder Drehung (die letzte Ausgabe entspricht also der ersten Ausgabe).
Als Trennzeichen dienen ein Leerzeichen zwischen den einzelnen Symbolen innerhalb einer Matrix, zwei Leerzeichen zwischen zwei horizontal angeordnete Matrizen und eine Leerzeile zwischen den einzelnen Versionen. Beachten Sie das Fehlen von abschließenden Leerzeichen nach der letzten Matrize. Siehe dazu auch die Beispielausgabe.
0 Lösungen
GUI-Anwendung für Feiertags- und Arbeitstageausgabe
Schreibe eine GUI-Anwendung, die ausgehend von einem Startdatum bis zu einem (exklusiven) Enddatum alle dazwischen liegenden Feiertage in Deutschland ausgibt sowie die Anzahl der Arbeitstage, d. h. Anzahl der Tage abzüglich Sa. + So. und Feiertage, die nicht auf Sa. oder So. fallen. Das Ergebnis soll bundeslandbezogen sein (also bitte Auswahlmöglichkeit einbauen).
Optional kann man das auf Österreich und/oder die Schweiz erweitern.
Optional kann man das auf Österreich und/oder die Schweiz erweitern.