pset2: crypto oldman pset2: crypto caesar...
TRANSCRIPT
![Page 1: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/1.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
pset2: Crypto
Tommy MacWilliam
September 18, 2011
![Page 2: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/2.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
Today’s Music
I RehabI ScarecrowI Storm ChaserI 1980I Graffiti the WorldI Running out of Time
![Page 3: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/3.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
BEFORE YOU DO ANYTHING
jharvard@appliance (~): sudo yum -y updatePassword: crimson
I do this before you do anything with submit50!I you don’t see your password, but you are indeed
inputting it!
![Page 4: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/4.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
Backing up Code
I submit50 saves your code on the CS50 siteI we only grade your latest submission, so submit50
often to back up!
I Dropbox (http://dropbox.com) already integrated intothe appliance
I automatically backs up your code to Dropbox’s site
![Page 5: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/5.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
Getting Code off the Appliance
I MacI select “Connect to Server” from Finder’s “Go” menuI input smb://192.168.56.50 under “Server Address”
I WindowsI open Windows Explorer, aka My ComputerI input \\192.168.56.50\jharvard into the address bar
![Page 6: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/6.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
This old man
jharvard@appliance (~/pset2): ./oldmanThis old man, he played oneHe played knick-knack on my thumbKnick-knack paddywhack, give your dog a boneThis old man came rolling home
![Page 7: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/7.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
TODO
1. loop over verses2. display each verse
![Page 8: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/8.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
Loops
I 10 verses, each slightly differentI can store verses in variables
I verses are only slightly different, so avoid repetition!
I can use conditionsI different text is displayed depending on verse number
![Page 9: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/9.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
TODO
1. loop over verses2. display each verse
![Page 10: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/10.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
Functions
I function: block of code aimed at accomplishing a singletask
I take input, produce output
I task: display a verseI input: which verse to displayI output: text of verse
![Page 11: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/11.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
TODO
1. loop over verses2. display each verse
![Page 12: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/12.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
Caesar
jharvard@appliance (~/pset2): ./caesar 13This is CS50.Guvf vf PF50.
![Page 13: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/13.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
TODO
1. get k from command line and convert to int2. prompt for string to encode3. loop over each character of the string4. output each encoded letter, making sure to not encode
non-letters
![Page 14: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/14.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
Getting Input
I argc: number of arguments givenI argv[]: array of stringsI ./caesar 13
I argc == 2I argv[0] == "caesar"I argv[1] == "13"
![Page 15: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/15.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
atoi
I converts a string to an integer
string a = "50";int i = atoi(a);
![Page 16: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/16.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
Using Command-Line Arguments
I example time!I args.c
![Page 17: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/17.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
TODO
1. get k from command-line and convert to int2. prompt for string to encode3. loop over each character of the string4. output each encoded letter, making sure to not encode
non-letters
![Page 18: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/18.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
Strings
I pset1 had numerical input, now we have wordsI string: sequence of characters
string name = GetString();printf("Your name is %s\n", name);
![Page 19: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/19.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
TODO
1. get k from command-line and convert to int2. prompt for string to encode3. loop over each character of the string4. output each encoded letter, making sure to not encode
non-letters
![Page 20: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/20.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
Strings Again
I char: single character, type just like int or floatI strings are just char arrays
I strlen: get length of string
string word = GetString();int length = strlen(word);for (int i = 0; i < length; i++)
printf("%c", word[i]);
![Page 21: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/21.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
TODO
1. get k from command-line and convert to int2. prompt for string to encode3. loop over each character of the string4. output each encoded letter, making sure to not encode
non-letters
![Page 22: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/22.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
Caesar Cipher
I ci = (pi + k)%26I ci : i th character in the ciphertextI pi : i th character in the cleartextI k : number of rotations (user’s input)I %26: Z should wrap to A
I http://en.wikipedia.org/wiki/Caesar_cipher
![Page 23: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/23.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
Caesar Cipher
T h i s i s C S 5 0 .+ + + + + + + +13 13 13 13 13 13 13 13↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓G u v f v f P F 5 0 .
![Page 24: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/24.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
ASCII
I http://www.asciitable.com/I ASCII maps characters to numbers
I ’A’ = 65I ’a’ = 97
![Page 25: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/25.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
ASCII and You
I example time!I ascii.c
![Page 26: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/26.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
ASCII and Caesar
I don’t forget to %!I however: (’Z’ + 2) % 26 == 20
I should be ’B’, or 67!
![Page 27: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/27.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
Keep in Mind
I capitalization must be preservedI letters should never become symbolsI symbols should not be changed
![Page 28: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/28.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
TODO
1. get k from command-line and convert to int2. prompt for string to encode3. loop over each character of the string4. output each encoded letter, making sure to not encode
non-letters
![Page 29: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/29.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
Vigenere
jharvard@appliance (~/pset2): ./vigenere tommyThis is CS50.Mvue gl QE50.
![Page 30: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/30.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
TODO
1. read keyword from command-line2. prompt for string to encode3. loop over string4. loop over keyword, making sure to restart when end of
keyword reached5. output each encoded letter, making sure to not encode
non-letters
![Page 31: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/31.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
Getting Input
I word taken at command line instead of integerI argv[] already contains strings, so no need to atoi!
I prompting for plaintext? GetString(), just like before
![Page 32: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/32.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
TODO
1. read keyword from command-line2. prompt for string to encode3. loop over string4. loop over keyword, making sure to restart when end of
keyword reached5. output each encoded letter, making sure to not encode
non-letters
![Page 33: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/33.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
Vigenere Cipher
I ci = (pi + kj)%26I ci : i th character in the ciphertextI pi : i th character in the plaintextI kj : j th character in the keyword (user’s input)
I keyword can have different length than p!
I %26: Z should wrap to A
![Page 34: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/34.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
Vigenere Cipher
T h i s ! i s C S 5 0 .+ + + + + + + +t o m m y t o m↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓M v u e ! g l Q E 5 0 .
![Page 35: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/35.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
Vigenere Cipher
I rotate each character by a different amount!I after each letter, go to next letter in keywordI but, don’t go to next letter in keyword if character in
plaintext is a symbolI at end of keyword, go back to beginning of keyword
I need to keep track of position in plaintext AND positionin keyword
![Page 36: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/36.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
TODO
1. read keyword from command-line2. prompt for string to encode3. loop over string4. loop over keyword, making sure to restart when end of
keyword reached5. output each encoded letter, making sure to not encode
non-letters
![Page 37: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/37.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
Style
Good code style isSTILL serious business.
![Page 38: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/38.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
But so is design
I DRY: Don’t Repeat YourselfI copy/pasting code? bad ideaI rewriting the same logic several times? bad idea
![Page 39: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/39.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
Functions
I functions allow you to reuse codeI break up large problems into smaller problemsI organize your code
![Page 40: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/40.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
One More Thing
I https://www.cs50.net/resources/cppreference.com/stdstring/
I don’t rewrite functions that already exist!I I mean, someone else probably worked really hard on
them
![Page 41: pset2: Crypto oldman pset2: Crypto Caesar Vigenered2o9nyf4hwsci4.cloudfront.net/2011/fall/psets/2/walkthrough2.pdf · pset2: Crypto Tommy MacWilliam Appliance oldman Caesar Vigenere](https://reader034.vdocument.in/reader034/viewer/2022051320/5a78edd47f8b9a83238e8474/html5/thumbnails/41.jpg)
pset2: Crypto
TommyMacWilliam
Appliance
oldman
Caesar
Vigenere
Design
BEFORE YOU GO ANYWHERE
jharvard@appliance (~): sudo yum -y updatePassword: crimson
I do this before you do anything with submit50!I you don’t see your password, but you are indeed
inputting it!