engr cs 101 cs session
play

ENGR/CS 101 CS Session Lecture 5 Log into Windows/ACENET (reboot if - PowerPoint PPT Presentation

ENGR/CS 101 CS Session Lecture 5 Log into Windows/ACENET (reboot if in Linux) Start Microsoft Visual Studio 2010 Has everyone finished the exercise from last time so that their program will encipher one uppercase letter? Lecture 5


  1. ENGR/CS 101 CS Session Lecture 5  Log into Windows/ACENET (reboot if in Linux)  Start Microsoft Visual Studio 2010  Has everyone finished the exercise from last time so that their program will encipher one uppercase letter? Lecture 5 ENGR/CS 101 Computer Science Session 1

  2. Outline  Problem: input more than one letter at a time  C# programming language  Strings and indexing  For-loops  Problem: input more than one word at a time  C# programming language  If-statements Lecture 5 ENGR/CS 101 Computer Science Session 2

  3. Problem: Input Words  Today we will modify our GUI program to accept and encipher whole words in uppercase letters, rather than just a single letter. Lecture 5 ENGR/CS 101 Computer Science Session 3

  4. Strings  Enciphering one letter at a time is tedious.  Want to handle an entire word.  Design: Encipher each letter in the plaintext box. Need to use a string , rather than a character.  A string is a sequence of characters. The Text property of a textbox is a string. E.g., we can access it using: plaintextBox.Text; Lecture 5 ENGR/CS 101 Computer Science Session 4

  5. Indexing  Individual characters are accessed by giving the index of the character in the string. 'A' 'C' 'E' 'S' [0] [1] [2] [3]  The syntax for accessing an individual character is: <string var>[<index>].  Example: plaintextBox.Text[2] is the character 'E' Lecture 5 ENGR/CS 101 Computer Science Session 5

  6. Indexing  As shown on the previous slide, the indexes of a string start at 0.  We can use indexing to get the key letter, too. It is the first character in the keyBox.Text string. shiftKey = keyBox.Text[0]; Lecture 5 ENGR/CS 101 Computer Science Session 6

  7. For-Loops  An index used to access string characters may be any integer expression. In particular, it may be a variable. So we can make a variable count from 0 to the last index of the string to access each character one at a time.  We do this with a for-loop (also called a counting loop). A for-loop consists of 4 parts:  A loop control variable and its initial value  A loop condition test of the loop control variable  A loop control variable update  A body of steps that are repeated Lecture 5 ENGR/CS 101 Computer Science Session 7

  8. For-Loops  For our Encipher handler design, we would use the for-loop in the following way (changes in bold ) . 1. Clear ciphertext box 2. Get the shift key from keyBox.Text[0] 3. For index i from 0 to length of plaintextBox.Text by 1 3.1. Get the plaintext letter from plaintextBox.Text[i] 3.2. Compute the corresponding ciphertext letter 3.3. Append the ciphertext letter to the ciphertext box. Lecture 5 ENGR/CS 101 Computer Science Session 8

  9. For-Loops  Some notes:  Clearing the ciphertext box and getting the shift key need to be done only once, so they happen before the loop starts.  The loop control variable is i, with an initial value of 0. It is updated by adding 1 to i until it reaches the length of the plaintextBox.Text string. Lecture 5 ENGR/CS 101 Computer Science Session 9

  10. For-Loops  More notes:  The length of a string is obtained using the Length property, accessed with the dot notation (e.g., plaintextBox.Text.Length).  The loop body should compute the ciphertext letter and appending it to the ciphertext box in the same way as before. Lecture 5 ENGR/CS 101 Computer Science Session 10

  11. For-Loops  The syntax of a for-loop in C# is: for ( <lcv declaration/initialization>; <loop condition>; <lcv update statement>) { <steps to be repeated> }  For our program, we would write: for (int i = 0; i < plaintextBox.Text.Length; i++) { // steps to be repeated } Lecture 5 ENGR/CS 101 Computer Science Session 11

  12. For-Loops  Code notes:  Since indexing starts at 0, the length of a string is one more than the index of the last character of the string.  E.g., "ACES" is a 4-letter word with indexes 0-3.  Thus the loop condition uses < rather than <=. More on conditions later. Lecture 5 ENGR/CS 101 Computer Science Session 12

  13. In-class Exercise, Part 1  Modify the GUI program to encipher a word of plaintext and display the ciphertext using a for-loop (code shown on the next 3 slides):  Get the shiftKey using indexing instead of char.Parse( )  Add a for-loop around the statements that correspond to steps 3.1 - 2.3 on Slide 8. Note that the body of the for-loop is mostly the same code as before, except for getting plainLetter using indexing instead of char.Parse( ) Lecture 5 ENGR/CS 101 Computer Science Session 13

  14. Putting the Code Together // The modified parts of the program are bold // Everything is the same on this page. // Variable declarations char shiftKey, // key letter plainLetter, // user input cipherLetter;// result int shiftNumber, // # of shift places index; // of cipher letter // Clear the result box ciphertextBox.Text = ""; Lecture 5 ENGR/CS 101 Computer Science Session 14

  15. Putting the Code Together // Use indexing to get the shift key shiftKey = keyBox.Text[0]; // For each letter in plaintext box, indexed by i for (int i = 0; i < plaintextBox.Text.Length; i++) { // Use indexing to get the plaintext letter plainLetter = plaintextBox.Text[i] ; // Compute the corresponding ciphertext letter // This is the same as before shiftNumber = shiftKey - 'A'; index = (plainLetter - 'A' + shiftNumber) % 26; cipherLetter = (char)((int)'A' + index); Lecture 5 ENGR/CS 101 Computer Science Session 15

  16. Putting the Code Together // This is still part of loop body // Append the enciphered letter to ciphertext box // This is the same as before ciphertextBox.AppendText(cipherLetter.ToString()); } // don't forget the closing curly brace!! Lecture 5 ENGR/CS 101 Computer Science Session 16

  17. In-class Exercise, Part 1  Test your program with the string "ACES" => "IKMA"  See what happens if you type in "GO ACES!" We'll fix this "problem" next. Lecture 5 ENGR/CS 101 Computer Science Session 17

  18. Problem: Input Sentences  Now we will modify our GUI program to accept and encipher whole sentences in uppercase letters, rather than just a single word. Lecture 5 ENGR/CS 101 Computer Science Session 18

  19. If-Statements  To prevent the program from enciphering non-uppercase letter characters, we want to execute the shifting code only when the plaintext letter is in the uppercase alphabet.  We do this with an if-statement . Lecture 5 ENGR/CS 101 Computer Science Session 19

  20. If-Statements  An if-statement has:  A condition test  A body to execute when the test is true  An optional body to execute when the test is false  We used it to decide whether to encipher a character as follows: 1. If the plaintext letter is an uppercase letter 1.1 Compute corresponding ciphertext letter Else 1.2 Set ciphertext letter to the plaintext letter Lecture 5 ENGR/CS 101 Computer Science Session 20

  21. Conditions  A condition is an expression that is either true or false  They are formed using operators == equal to != not equal to < less than <= less than or equal to > greater than >= greater than or equal to && logical AND - true is both operands are true || logical OR - true if one of the operands is true Lecture 5 ENGR/CS 101 Computer Science Session 21

  22. If-Statements  Example: test if a letter is uppercase (('A' <= letter) && (letter <= 'Z'))  The syntax of a C# if-statement is: if (<condition>) { <body to execute when condition is true> } else // this part is optional { <body to execute when condition is false> } Lecture 5 ENGR/CS 101 Computer Science Session 22

  23. In-class Exercise, Part 2  Modify the GUI program to encipher a sentence of plaintext and display the ciphertext using an if- statement around the cipher letter computation in the for-loop (code shown on the next slide)  Test your program with the string "GO ACES!" => "OW IKMA!"  See what happens if you type in "Go Aces!" We'll cover error checking and enciphering lowercase letters next class. We'll also add deciphering to the program. Lecture 5 ENGR/CS 101 Computer Science Session 23

  24. Putting the Code Together // Put an if statement around the ciphertext // letter computation. New stuff in bold . if (('A' <= plainLetter) && (plainLetter <= 'Z')) { // Compute the ciphertext letter shiftNumber = shiftKey - 'A'; index = (plainLetter - 'A' + shiftNumber) % 26; cipherLetter = (char)((int)'A' + index); } else // do not encipher { cipherLetter = plainLetter; } Lecture 5 ENGR/CS 101 Computer Science Session 24

Recommend


More recommend