|
|
|
|
169
|
---
|
169
|
---
|
170
|
|
170
|
|
171
|
|
171
|
|
172
|
-##Laboratory session:
|
|
|
|
|
172
|
+## Laboratory session:
|
173
|
|
173
|
|
174
|
You will be completing an application to cipher a message using the Vigenere technique. To simplify coding, the keyword and cleartext must consist exclusively of letters. Furthermore, your program must change both the cleartext and keyword to uppercase before ciphering.
|
174
|
You will be completing an application to cipher a message using the Vigenere technique. To simplify coding, the keyword and cleartext must consist exclusively of letters. Furthermore, your program must change both the cleartext and keyword to uppercase before ciphering.
|
175
|
|
175
|
|
176
|
-###Exercise 1: Keyword and cleartext of the same length
|
|
|
|
|
176
|
+### Exercise 1 - Keyword and cleartext of the same length
|
177
|
|
177
|
|
178
|
In this exercise you will implement a function that given a cleartext and keyword of equal length returns the cipher message.
|
178
|
In this exercise you will implement a function that given a cleartext and keyword of equal length returns the cipher message.
|
179
|
|
179
|
|
180
|
-####Instructions
|
|
|
|
|
180
|
+#### Instructions:
|
|
|
181
|
+
|
|
|
182
|
+1. Load the project `VigenereCypher` into `QtCreator`. There are two ways to do this:
|
|
|
183
|
+
|
|
|
184
|
+ * Using the virtual machine: Double click the file `VigenereCypher.pro` located in the folder `/home/eip/labs/repetitions-vigenerecypher` of your virtual machine.
|
|
|
185
|
+ * Downloading the project’s folder from `Bitbucket`: Use a terminal and write the command `git clone http:/bitbucket.org/eip-uprrp/repetitions-vigenerecypher` to download the folder `repetitions-vigenerecypher` from `Bitbucket`. Double click the file `VigenereCypher.pro` located in the folder that you downloaded to your computer.
|
181
|
|
186
|
|
182
|
-1. Load the Qt project called `VigenereCypher` by double-clicking on the `VigenereCypher.pro` file in the `Documents/eip/Repetitions-VigenereCypher` folder of your computer. Alternatively you may clone the git repository `http://bitbucket.org/eip-uprrp/repetitions-vigenerecypher` to download the `Repetitions-VigenereCypher` folder to your computer.
|
|
|
183
|
-
|
|
|
184
|
2. You will be writing your code in the `cypher.cpp` file. In this file, the `cypher` function receives a message and a keyword of equal length and that consist exclusively of letters, and returns the Vigenere-ciphered message. Your task is to finish the implementation of the `cypher` function.
|
187
|
2. You will be writing your code in the `cypher.cpp` file. In this file, the `cypher` function receives a message and a keyword of equal length and that consist exclusively of letters, and returns the Vigenere-ciphered message. Your task is to finish the implementation of the `cypher` function.
|
185
|
|
188
|
|
186
|
Using the methods and functions discussed earlier, your implementation must verify if the message and keyword consist exclusively of letters and are of equal length. If that is not the case, the ciphered message must be (literally) `"MENSAJE O CLAVE INVALIDO"`. Remember that your program must change both the cleartext and keyword to upper-case letters before ciphering.
|
189
|
Using the methods and functions discussed earlier, your implementation must verify if the message and keyword consist exclusively of letters and are of equal length. If that is not the case, the ciphered message must be (literally) `"MENSAJE O CLAVE INVALIDO"`. Remember that your program must change both the cleartext and keyword to upper-case letters before ciphering.
|
|
|
|
|
188
|
3. After you implement the `cypher` function, go to the `main` function and uncomment the line that invokes `test_cypher1`. The `test_cypher1` function is a unit test for the `cypher` function. It calls the `cypher` function with various arguments to verify if it returns correct results. If any of the results is incorrect the program stops and reports the test case that failed. You will not see the application’s graphical user interface until the unit test passes all validations. Once you see the graphical user interface you may continue onto the next part of this lab experience.
|
191
|
3. After you implement the `cypher` function, go to the `main` function and uncomment the line that invokes `test_cypher1`. The `test_cypher1` function is a unit test for the `cypher` function. It calls the `cypher` function with various arguments to verify if it returns correct results. If any of the results is incorrect the program stops and reports the test case that failed. You will not see the application’s graphical user interface until the unit test passes all validations. Once you see the graphical user interface you may continue onto the next part of this lab experience.
|
189
|
|
192
|
|
190
|
|
193
|
|
191
|
-###Exercise 2: Keyword and cleartext of arbitrary lengths
|
|
|
|
|
194
|
+### Exercise 2 - Keyword and cleartext of arbitrary lengths
|
192
|
|
195
|
|
193
|
In this exercise you will modify the code for the cypher function from Exercise 1 so that the application can now cipher a message using a keyword of arbitrary length.
|
196
|
In this exercise you will modify the code for the cypher function from Exercise 1 so that the application can now cipher a message using a keyword of arbitrary length.
|
194
|
|
197
|
|
195
|
-####Instructions
|
|
|
|
|
198
|
+#### Instructions:
|
196
|
|
199
|
|
197
|
1. Modify the implementation of the `cypher` function so that it can cipher a message with a keyword of any (non-zero) length. For this exercise the message may contain any character (including non alphabetical characters). The keyword must consist exclusively of letters.
|
200
|
1. Modify the implementation of the `cypher` function so that it can cipher a message with a keyword of any (non-zero) length. For this exercise the message may contain any character (including non alphabetical characters). The keyword must consist exclusively of letters.
|
198
|
|
201
|
|
|
|
|
|
217
|
|
220
|
|
218
|
---
|
221
|
---
|
219
|
|
222
|
|
220
|
-##Deliverables
|
|
|
|
|
223
|
+## Deliverables
|
221
|
|
224
|
|
222
|
|
225
|
|
223
|
-Use "Deliverables" in Moodle to upload the `cypher.cpp` file that contains the `cypher` function that you created in Exercise 2. Remember to use good programming techniques, include the names of the programmers involved, and to document your program.
|
|
|
|
|
226
|
+Use "Deliverable" in Moodle to upload the `cypher.cpp` file that contains the `cypher` function that you created in Exercise 2. Remember to use good programming techniques, include the names of the programmers involved, and to document your program.
|
224
|
|
227
|
|
225
|
|
228
|
|
226
|
---
|
229
|
---
|
227
|
|
230
|
|
228
|
---
|
231
|
---
|
229
|
|
232
|
|
230
|
-##References
|
|
|
|
|
233
|
+## References
|
231
|
|
234
|
|
232
|
http://www.nctm.org/uploadedImages/Classroom_Resources/Lesson_Plans/
|
235
|
http://www.nctm.org/uploadedImages/Classroom_Resources/Lesson_Plans/
|