1710 vektorer - chiffer

Människan har under lång tid varit intresserad av att kunna kommunicera utan att obehöriga kan lyssna. Du ska öva på vektorer och algoritmer genom att skiva enkla krypteringsprogram.

Klassen CharacterArray

En ordlista med översättning från engelska till svenska finns längst ner på sidan.

CharacterArray

  • char [] characters
  • int noCharacters
  1. setText(String text)
  2. toString()
  3. print()
  4. isPalindrome()
  5. swap(int indexOne, int indexTwo)
  6. invert()

Fält

characters är en vektor som innehåller bokstäverna i texten som ska krypteras.

noCharacters är kortform av number of characters.

Konstruktor

Konstruktorn tar texten som parameter. Vid kryptering kommer vi enbart att arbeta med gemener, små bokstäver. I klassen String finns metoden toLowerCase(). Använd den. För att göra om en text, av typen String, används metoden toCharArray(). Även denna metod finns i klassen String.

Antalet element i en vektor fås med

vektornsNamn.length

Ge alla fält ett värde.

Hjälpmetoder

För att underlätta arbetet med att kryptera gör vi ett antal hjälpmetoder.

setText(String text)

Metoden är inte nödvändig, men gör den om du vill.

toString()

Returnerar texten som ett objekt av klassen String. Det finns en konstruktor i klassen String som tar en vektor som parameter.

print()

Den är så lätt som man kan hoppas. Nedanstående är en kommentar i Java. Den skrivs ovanför metodhuvudet, utan blankrader emellan. Det gör att man kan använda färdiga verktyg för att generera dokumentation av koden.

/**
 * skriv ut ordet
 */

Palindrom

Palindrom har egentligen inte så mycket med chiffer att göra, men det blir en relativt enkel övning på vektorer.

isPalindrome() Kayak är ett palindrom

/**
 * @return true om ordet är ett palindrom, annars false
 */

Lösningsgång Skriv ett palindrom på ett papper. Beskriv, skriftligt, hur du kan göra för att kolla om ordet är ett palindrom. Skriv in detta som kommentarer. Låt kommentarerna stå kvar och översätt till Java.

Du kommer väl ihåg hur man skriver en for-slinga.

for (int index = 0; index < 10; index = index + 1)
{
  //koden här görs en gång för varje varv i slingan
  //index har olika värden i vart och ett av varven 
}
//denna kod körs när for-slingan är klar

Fler hjälpmetoder

swap(int indexOne, int indexTwo)

/**
 * Byt plats på bokstäverna som har index
 * indexOne och indexTwo.
 */

Tips Tänk dig att du har ett glas med vatten och ett glas med saft. Nu ska saften och vattnet byta plats. Beskriv med ord hur saften och vattnet kan byta plats. Var noggrann. Beskriv varje skriv. Byt tillbaka till ursprungsproblemet. Skriv sedan ner din beskrivning som en kommentar i Java. Översätt slutligen till kod.

invert()

/**
 * Speglar texten, så att första bokstaven kommer sist och den sista kommer först,
 * den näst sista byter plats med den näst första,
 * och så vidare för alla bokstäver i texten.
 */

Denna metod kan vara ett enkelt chiffer.

Du har väl testat att allt fungerar som det ska? Nu är det dags för en hjälpklass till. Den kommer in nästa övning.

Ordlista

array vektor

character tecken

letter bokstav