Skillnad mellan versioner av "Övningar 10 (Algoritmer)"

Från Mathonline
Hoppa till: navigering, sök
(Skapade sidan med '__NOTOC__ {| border="0" cellspacing="0" cellpadding="0" height="30" width="100%" | style="border-bottom:1px solid #797979" width="5px" |   {{Not selected tab|Lektion 10...')
 
m
 
(10 mellanliggande versioner av samma användare visas inte)
Rad 14: Rad 14:
 
<div class="border-divblue">
 
<div class="border-divblue">
 
<big>
 
<big>
<b>Arbeta med<span>:</span>
+
<b>Fortsätt att arbeta med<span>:</span>
 
<math> \quad </math><div class="smallBox">[[Instuderingsfrågor|<span style="color:blue">Instuderinsfrågorna inför tentan</span>]]</div> <math> \quad </math></b>
 
<math> \quad </math><div class="smallBox">[[Instuderingsfrågor|<span style="color:blue">Instuderinsfrågorna inför tentan</span>]]</div> <math> \quad </math></b>
 
Rekommendation: Öppna ett textdokument.
 
Rekommendation: Öppna ett textdokument.
Rad 26: Rad 26:
 
<div class="ovnE">
 
<div class="ovnE">
 
<big>
 
<big>
* &nbsp; Mata in klasserna [[Kap_3_Datastrukturer_och_abstrakta_datatyper_(forts._3)#Klassen G_Output|<b><span style="color:blue">G_Output</span></b>]], [[Kap_3_Datastrukturer_och_abstrakta_datatyper_(forts._3)#Klassen G_Bubble|<b><span style="color:blue">G_Bubble</span></b>]] och programmet [[Kap_3_Datastrukturer_och_abstrakta_datatyper_(forts._3)#Programmet_GenericTest|<b><span style="color:blue">GenericTest</span></b>]]. Kompilera och kör.
+
* &nbsp; Mata in klassen [[Kap_4_Tillämpningar#Klassen_EncryptStr|<b><span style="color:blue">EncryptStr</span></b>]] och programmet [[Kap_4_Tillämpningar#Programmet_EncryptStrTest|<b><span style="color:blue">EncryptStrTest</span></b>]]. Kompilera och kör.
* &nbsp; Mata in klasserna [[Kap_3_Datastrukturer_och_abstrakta_datatyper_(forts._3)#Klassen_RandList|<b><span style="color:blue">RandList</span></b>]], [[Kap_3_Datastrukturer_och_abstrakta_datatyper_(forts._3)#foreach i listor: Klassen_Print|<b><span style="color:blue">Print</span></b>]] och programmet [[Kap_3_Datastrukturer_och_abstrakta_datatyper_(forts._3)#Programmet_Lista|<b><span style="color:blue">Lista</span></b>]]. Kompilera och kör.
+
* &nbsp; Mata in klassen [[Kap_4_Tillämpningar#Klassen_EncryptChar|<b><span style="color:blue">EncryptChar</span></b>]] och programmet [[Kap_4_Tillämpningar#Programmet_EncryptCharTest|<b><span style="color:blue">EncryptCharTest</span></b>]]. Kompilera och kör.
* &nbsp; Läs om <b><span style="color:red">Generiska metoder</span></b> i [http://mathonline.se:1802/Boken%20Alg%20Datastr%20Design.pdf <b><span style="color:blue">kursboken</span></b>], sid 123-127, speciellt om <b><span style="color:red">Constraints</span></b>, sid 127.
+
* &nbsp; Läs om <b><span style="color:red">Kryptering av strängar</span></b> i [http://mathonline.se:1802/Boken%20Alg%20Datastr%20Design.pdf <b><span style="color:blue">kursboken</span></b>], sid 135-137.
* &nbsp; Läs om <b><span style="color:red">Listor</span></b> i [http://mathonline.se:1802/Boken%20Alg%20Datastr%20Design.pdf <b><span style="color:blue">kursboken</span></b>], sid 128-131.
+
* &nbsp; Läs om <b><span style="color:red">Kryptering av text, teckenvis</span></b> i [http://mathonline.se:1802/Boken%20Alg%20Datastr%20Design.pdf <b><span style="color:blue">kursboken</span></b>], sid 138-140.
* &nbsp; Lös uppgifterna nedan, [http://mathonline.se:1802/Boken%20Alg%20Datastr%20Design.pdf <b><span style="color:blue">kursboken</span></b>], <b><i>Övningar till kapitel 3</i></b>, sid 132.
+
* &nbsp; Läs om <b><span style="color:red">Referens som parameter och returvärde</span></b> i [http://mathonline.se:1802/Boken%20Alg%20Datastr%20Design.pdf <b><span style="color:blue">kursboken</span></b>], sid 135.
 +
* &nbsp; I metoden Encrypt(), klassen EncryptStr, finns satsen: ch = (char)(ch + n); Undersök följande fråga:
 +
&nbsp; &nbsp; &nbsp; &nbsp; Varför måste (ch + n) explicit konverteras till char, när variabeln ch redan är deklarerad till char?
 +
* &nbsp; Lös uppgifterna nedan:
 
</big>
 
</big>
 
</div>
 
</div>
Rad 36: Rad 39:
  
 
<div class="ovnC">
 
<div class="ovnC">
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: Ovn 3_5_7.jpg]]</div>
+
<big>
 +
<big><b><span style="color:red">Kryptering av sträng med klassen String</span></b></big>
  
 
+
Vidareutveckla krypteringsalgoritmen i [[Kap_4_Tillämpningar#Klassen_EncryptStr|<b><span style="color:blue">Klassen EncryptStr</span></b>]].
<big><big>
+
* &nbsp; Modifiera klassen <b>EncryptStr</b> till en ny klass <b>EncryptStr_Fkt</b> så här:
&nbsp; Jämför dina lösningar med lösningsförslagen i slutet av [http://mathonline.se:1802/Boken%20Alg%20Datastr%20Design.pdf <b><span style="color:blue">kursboken</span></b>], sid 242-245.
+
* &nbsp; Modifiera metoden <b>Encrypt(String t, int n)</b> till <b>Encrypt(String t, int k, int m)</b>.
</big></big>
+
* &nbsp; Definiera krypteringen av tecknen med en linjär funktion y = k x + m, dvs:
 +
* &nbsp; Ersätt satsen <b>ch = (char)(ch + n);</b> med <b>ch = (char)(k*ch + m);</b>
 +
* &nbsp; Lägg till en ny metod <b>Decrypt(String t, int k, int m)</b> som dekrypterar tecknen med
 +
&nbsp; &nbsp; &nbsp; &nbsp; den inversa funktionen y = (x - m) / k dvs: <b>ch = (char)((ch - m)/k);</b>
 +
* &nbsp; Anropa båda metoderna från Main() genom att skicka värdena 2 till k och -5 till m.
 +
&nbsp; &nbsp; &nbsp; &nbsp; Dvs krypteringsfunktionen blir y = 2 x - 5 och dekrypteringsfunktionen y = (x + 5) / 2
 +
</big>
 
</div>
 
</div>
  
 +
 +
<div class="ovnA">
 +
<big>
 +
<big><b><span style="color:red">Kryptering av text med arrayen char[ ]</span></b></big>
 +
 +
Vidareutveckla krypteringsalgoritmen i [[Kap_4_Tillämpningar#Klassen_EncryptChar|<b><span style="color:blue">Klassen EncryptChar</span></b>]].
 +
* &nbsp; Modifiera klassen <b>EncryptChar</b> till en ny klass <b>EncryptChar_Fkt</b> så här:
 +
* &nbsp; Modifiera metoden <b>Encrypt(char[ ] t, int n)</b> till <b>Encrypt(char[ ] t, int k, int m)</b>.
 +
* &nbsp; Definiera krypteringen av tecknen med en linjär funktion y = k x + m, dvs:
 +
* &nbsp; Ersätt satsen <b>t[i] = (char) (t[i] + n);</b> med <b>t[i] = (char) (k*t[i] + m);</b>
 +
* &nbsp; Lägg till en ny metod <b>Decrypt(char[ ] t, int k, int m)</b> som dekrypterar tecknen med
 +
&nbsp; &nbsp; &nbsp; &nbsp; den inversa funktionen y = (x - m) / k dvs: <b>t[i] = (char) ((t[i] - m)/k);</b>
 +
* &nbsp; Anropa båda metoderna från Main() genom att skicka värdena 3 till k och -40 till m.
 +
&nbsp; &nbsp; &nbsp; &nbsp; Dvs krypteringsfunktionen blir y = 3 x - 40 och dekrypteringsfunktionen y = (x + 40) / 3
 +
</big>
 +
</div>
  
  

Nuvarande version från 4 november 2022 kl. 13.24

        <<  Agenda          Kursens planering          Genomgång          Dagens övningar          Nästa lektion  >>      


Dagens övningar

Fortsätt att arbeta med:

\( \quad \) \( \quad \)

Rekommendation: Öppna ett textdokument.

Skriv ned dina svar. Ingen inlämning krävs.

Arbeta gärna gruppvis.


  •   Mata in klassen EncryptStr och programmet EncryptStrTest. Kompilera och kör.
  •   Mata in klassen EncryptChar och programmet EncryptCharTest. Kompilera och kör.
  •   Läs om Kryptering av strängar i kursboken, sid 135-137.
  •   Läs om Kryptering av text, teckenvis i kursboken, sid 138-140.
  •   Läs om Referens som parameter och returvärde i kursboken, sid 135.
  •   I metoden Encrypt(), klassen EncryptStr, finns satsen: ch = (char)(ch + n); Undersök följande fråga:

        Varför måste (ch + n) explicit konverteras till char, när variabeln ch redan är deklarerad till char?

  •   Lös uppgifterna nedan:


Kryptering av sträng med klassen String

Vidareutveckla krypteringsalgoritmen i Klassen EncryptStr.

  •   Modifiera klassen EncryptStr till en ny klass EncryptStr_Fkt så här:
  •   Modifiera metoden Encrypt(String t, int n) till Encrypt(String t, int k, int m).
  •   Definiera krypteringen av tecknen med en linjär funktion y = k x + m, dvs:
  •   Ersätt satsen ch = (char)(ch + n); med ch = (char)(k*ch + m);
  •   Lägg till en ny metod Decrypt(String t, int k, int m) som dekrypterar tecknen med

        den inversa funktionen y = (x - m) / k dvs: ch = (char)((ch - m)/k);

  •   Anropa båda metoderna från Main() genom att skicka värdena 2 till k och -5 till m.

        Dvs krypteringsfunktionen blir y = 2 x - 5 och dekrypteringsfunktionen y = (x + 5) / 2


Kryptering av text med arrayen char[ ]

Vidareutveckla krypteringsalgoritmen i Klassen EncryptChar.

  •   Modifiera klassen EncryptChar till en ny klass EncryptChar_Fkt så här:
  •   Modifiera metoden Encrypt(char[ ] t, int n) till Encrypt(char[ ] t, int k, int m).
  •   Definiera krypteringen av tecknen med en linjär funktion y = k x + m, dvs:
  •   Ersätt satsen t[i] = (char) (t[i] + n); med t[i] = (char) (k*t[i] + m);
  •   Lägg till en ny metod Decrypt(char[ ] t, int k, int m) som dekrypterar tecknen med

        den inversa funktionen y = (x - m) / k dvs: t[i] = (char) ((t[i] - m)/k);

  •   Anropa båda metoderna från Main() genom att skicka värdena 3 till k och -40 till m.

        Dvs krypteringsfunktionen blir y = 3 x - 40 och dekrypteringsfunktionen y = (x + 40) / 3








Copyright © 2022 TechPages AB. All Rights Reserved.