Algorithmus erstellen

Gummiball

Grünschnabel
Hallo, ich brauche Nachhilfe 1.Lehrjahr als Fachinformatiker für Systemintegration: wer kann helfen:
Aufgabe: Eine Firma hat zig Mitarbeiter. Jeder Mitarbeiter benutzt an seinem PC ein achtstelliges Passwort, welches Groß- und Kleinbuchstaben sowie Ziffern und Sonderzeichen besitzt. Passwort besteht aus 8 zufällig gewählten Zeichen des ASCII-Codes gemäß Passwortrichtlinie.
Beachte folgendes:

Funktion​
Beschreibung​
generiereZufallszahl (zahl : int) : intgibt eine positive ganzzahlige Zufallszahl aus dem Bereich von 0 bis einschließlich der übergebenen zahl zurück
toChar (zahl : int) : charwandelt Zahl in ASCI Zeichen um und gibt zurück
+ - Operatorein Zeichen/Zeichenkette kann an einen vorhandenen Text angehängt werden
Erstelle Algorithmus für Passwortgenerierung. Passwort soll zur Überprüfung auf Bildschirm angezeigt werden. Nutze zur Lösung die ASCII Tabelle
Wer kann weiter helfen???
 

Technipion

Erfahrenes Mitglied
Ich kann dir als Hilfe zumindest mal eine ASCII-Tabelle posten :LOL:

Quelle: American Standard Code for Information Interchange – Wikipedia

Das sollte uns ja schonmal ein Stückchen weiter bringen.

Also im Prinzip werden dir ja 3 Puzzlestückchen vorgegeben.

generiereZufallszahl() ← Gibt dir eine Zufallszahl zurück. Den Bereich kannst du dabei mehr oder weniger selbst auswählen.

toChar() ← Wandelt eine Zahl in ein Zeichen um, indem es in der ASCII-Tabelle nachschlägt.

+-Operator ← Erlaubt dir Zeichen zu Verknüpfen (Konkatenation).

Na, wie muss ich die Teile jetzt zusammenstöpseln, damit ich ein 8-Zeichen Zufallspasswort generiere?

Gruß Technipion
 

Technipion

Erfahrenes Mitglied
Keine Ahnung. Wir sind im Home office ohne Bücher ohne nichts....Bitte daher um Hilfe.....
Aber du hast doch Zugriff auf das gesamte Internet? :confused:

Und was noch viel wichtiger ist: Du hast doch einen Kopf und kannst selbst einfach ein bisschen mit den 3 Teilen herumspielen.
Also: Ich möchte, dass du dir jetzt ein Stückchen Pseudocode überlegst, das ein einzelnes Zufallszeichen (ASCII char) erzeugt. Den Code postest du dann.

Gruß Technipion
 

Technipion

Erfahrenes Mitglied
Dann schlage mir Seiten vor, wo ich was finde....
Die Aufgabe ist dermaßen trivial, da wirst du im Internet nichts zu finden. Das ist offensichtlich als leichter Einstieg in das Aufgabenblatt gedacht.

Ich gehe jetzt - zu deinen Gunsten - einfach mal davon aus, du bist noch total neu in der Welt der Informatik und weißt schlicht noch nicht wie man an solche Aufgaben herangeht.

Deshalb hier der Gedankengang wie man sich an die Lösung herantastet:

Du hast generiereZufallszahl(), toChar() und den +-Operator zur Konkatenation.
Da uns das Problem "Erstelle Zufallspasswort aus 8 Zeichen" im Moment zu schwer fällt, brechen wir das Problem in kleinere Stückchen. Versuchen wir es mit "Erstelle ein einzelnes Zufallszeichen".
Hierbei hilft uns offensichtlich der +-Operator nicht weiter. Wir verbleiben also mit generiereZufallszahl() und toChar().
Was kann ich damit anfangen?
Naja, ich kann z.B. das hier machen: char c = toChar(i); // i is an int
Bloß, da fehlt mir ja ein Integer den ich da einsetzen kann...?
Andererseits kann ich auch das hier machen: int x = generiereZufallszahl(j); // j is an int
Der Wert von j entscheidet dabei, in welchem Bereich die erzeugte Zufallszahl x liegt (von 0 bis einschließlich j).
Hmm, ich kann natürlich auch konkrete Werte einsetzen:
C:
char c = toChar(34);              // entspricht '!'
int x = generiereZufallszahl(10); // irgendwas von 0 bis 10
c = toChar(49);                   // entspricht '0'
x = generiereZufallszahl(15);     // irgendwas von 0 bis 15
c = toChar(100);                  // entspricht 'd'
x = generiereZufallszahl(200);    // irgendwas von 0 bis 200

Jetzt mal angenommen ich möchte ein zufälliges Zeichen aus der ASCII-Tabelle. Dann könnte ich ja das hier machen:
C:
int x = generiereZufallszahl(127);
char c = toChar(x);
// c ist zufälliges ASCII-Zeichen

Da sind jetzt natürlich ein Haufen nicht darstellbarer Zeichen dabei (z.B. LF = LineFeed). Die wollen wir laut Aufgabe ja eigentlich nicht drin haben:
Jeder Mitarbeiter benutzt an seinem PC ein achtstelliges Passwort, welches Groß- und Kleinbuchstaben sowie Ziffern und Sonderzeichen besitzt.
Groß- und Kleinbuchstaben und Ziffern und Sonderzeichen. Ein Blick in die Tabelle zeigt, dass wir das erste gültige Zeichen, das Ausrufezeichen, beim Wert 33 finden. Von dort an sind alles Buchstaben, Ziffern oder Sonderzeichen. Das letzte gültige Zeichen ist die Tilde (~) beim Wert 126. Das 128-te Zeichen (DEL) ist kein gültiges Zeichen.
Das ist jetzt die einzige Stelle wo wir ein bisschen Hirnschmalz brauchen. Wir müssen dafür sorgen, dass unser Zufallswert im Bereich von 33 bis (einschließlich) 126 liegt.
Das geht so: int x = 33 + generiereZufallszahl(93); // 126 - 33 = 93

Wenn wir jetzt also das hier tun:
C:
int x = 33 + generiereZufallszahl(93);
char c = toChar(x);
// c ist zufälliges ASCII-Zeichen, das zu unserem Passwort konform ist
Ergibt das ein einzelnes Zeichen, das wir für unser Passwort benutzen können.
Räumen wir das ganze noch etwas auf: char c = toChar(33 + generiereZufallszahl(93));

Sooo. Jetzt können wir daran gehen 8 Stück davon zu erzeugen und zu verknüpfen. Hier der triviale Ansatz:
C:
toChar(33 + generiereZufallszahl(93)) + toChar(33 + generiereZufallszahl(93)) + toChar(33 + generiereZufallszahl(93)) + toChar(33 + generiereZufallszahl(93)) + toChar(33 + generiereZufallszahl(93)) + toChar(33 + generiereZufallszahl(93)) + toChar(33 + generiereZufallszahl(93)) + toChar(33 + generiereZufallszahl(93));
Das ist natürlich super unaufgeräumt und unübersichtlich. Aber ich bin mir sicher ihr habt schonmal was von Schleifen gehört:
C:
char password[9];

WIEDERHOLE 8 MAL {
    char c = toChar(33 + generiereZufallszahl(93));
    password = password + c;
}

print(password);

Tada, unser Pseudocode. Bei Fragen bitte melden.

Und lass mich dir noch eines sagen: Du wirst dieses Studium/Ausbildung nicht bestehen, wenn du nicht hin und wieder bereit bist, dich auch mal hinter ein Problem zu klemmen und eigene Ideen zu entwerfen. Deshalb hoffe ich wirklich, dass du in Zukunft selbst versuchst solche Lösungen herzuleiten, gerne auch mit Hilfe aus dem Forum. Aber denk daran: In der Klausur sind wir nicht da, da musst du ran!

Gruß Technipion
 
Zuletzt bearbeitet:

Gummiball

Grünschnabel
Hallo,
hab erstmal vielen Dank für deine Mühe, aber so etwas hatten wir noch nicht. Wir sollen es als Struktogramm erstellen....ich versuche jetzt erstmal deins zu verstehen. lasse mir jedoch etwas Zeit...wenn ich fragen habe, melde ich mich wieder. Ich muss jetzt erstmal daraus ein Struktogramm erstellen....Habe noch keinen Plan....Ich bin echt ein Neuling 1. Lehrjahr durch Corona vieles selber aneignen...das fällt mir sehr schwer....Zunächst vielen Dank....
Wo finde ich die ganzen Redewendungen und deren Bedeutung
char, int, x, c.....
 

Technipion

Erfahrenes Mitglied
Wir sollen es als Struktogramm erstellen....
Ahhhhh, die Info wäre gleich am Anfang hilfreich gewesen...

Schau mal, hier ist eine ganz gute Zusammenfassung von Struktogrammen:

http://www.engelfrank.de/images/PDF/Informatik_11/Struktogramme.pdf

Hausaufgabe für dich: Aufmerksam lesen und nachvollziehen.

Falls du noch kein Programm hast, um solche Struktogramme selbst zu erstellen, ich habe früher mal das hier verwendet:

:: STRUCTORIZER :: -

Das macht für heutzutage sicherlich einen altmodischen Eindruck, sollte aber immer noch funktionieren. Und wenn du dann unseren obigen Pseudocode in ein Struktogramm unwandelst, erhältst du in etwa das hier:
Passworterzeugung.png

Wo finde ich die ganzen Redewendungen und deren Bedeutung
char, int, x, c.....
Die wichtigsten Schlagworte wirst du mit der Zeit lernen. Sowas wie char, int, etc. sind dann Schlüsselwörter aus bestimmten Programmiersprachen.

Versuch mal ob du das mit dem Struktogramm jetzt hinkriegst.

Gruß Technipion
 

Gummiball

Grünschnabel
Hallo, danke für die infos. Engelfrank habe ich auch schon gefunden und bearbeite es gerade....leider kann ich dir gar nicht helfen, denn ich stehe erst am Anfang der Startlöcher.....danke viele Grüße zurück