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

engr cs 101 cs session lecture 4
SMART_READER_LITE
LIVE PREVIEW

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

ENGR/CS 101 CS Session Lecture 4 Log into Windows/ACENET (reboot if in Linux) Start Microsoft Visual Studio 2010 Find your project from last class Did everyone finish the program from last class to the point that enciphers


slide-1
SLIDE 1

Lecture 4 ENGR/CS 101 Computer Science Session 1

ENGR/CS 101 CS Session Lecture 4

 Log into Windows/ACENET (reboot if in Linux)  Start Microsoft Visual Studio 2010  Find your project from last class  Did everyone finish the program from last class

to the point that enciphers everything in a line?

slide-2
SLIDE 2

Lecture 4 ENGR/CS 101 Computer Science Session 2

Outline

 Problem: preserve the spaces and non-letter

characters from the plaintext in the ciphertext

 Problem: input more than one line at a time  C# programming language

 If-statements and conditions  While loops

slide-3
SLIDE 3

Lecture 4 ENGR/CS 101 Computer Science Session 3

Program Specification

 Today's program first will do the following:

 Ask the user for an uppercase key letter (to

represent shift A-> key) and an uppercase line to encipher with this key.

 Display the corresponding ciphertext for each line.

The output should preserve whitespace and non-alphabetic characters.

 Example run (user input in bold):

Enter an uppercase key letter: I Enter an uppercase line to encipher: GO ACES! The corresponding ciphertext line is: OW IKMA!

slide-4
SLIDE 4

Lecture 3 ENGR/CS 101 Computer Science Session 4

If-Statements

 While our last program accepted any line of

plaintext, the spaces and non-letter characters also are enciphered.

 To prevent this from happening, we want to

execute the shifting code in the ShiftLetter function only when the received letter is in the uppercase alphabet.

 Do this with an if-statement.

slide-5
SLIDE 5

Lecture 3 ENGR/CS 101 Computer Science Session 5

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

 The syntax of an if-statement is:

if (<condition>) { <body to execute when condition is true> } else // this part is optional { <body to execute when condition is false> }

slide-6
SLIDE 6

Lecture 3 ENGR/CS 101 Computer Science Session 6

Conditions

 A condition is an expression that is either true

  • r 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

 Example: test if a letter is uppercase

(('A' <= letter) && (letter <= 'Z'))

slide-7
SLIDE 7

Lecture 3 ENGR/CS 101 Computer Science Session 7

If-Statements

 Here is our modified ShiftLetter function; the

new code is in bold.

private static char ShiftLetter (char letter, int shiftNumber) { char cipherLetter = letter; // start with the letter // test if letter is an uppercase alphabetic char if (('A' <= letter) && (letter <= 'Z')) { cipherLetter = (char) (((letter - 'A' + shiftNumber) % 26) + (int) 'A'); } return cipherLetter; }

slide-8
SLIDE 8

Lecture 3 ENGR/CS 101 Computer Science Session 8

In-class Exercise, Part 1

 Modify the ShiftLetter function so that it only

computes the cipher letter for uppercase alphabetic characters.

 Test your program on "GO ACES!" =>

"OW IKMA!"

 Bonus: Modify the ShiftLetter function so that it

will compute the cipher letter for lowercase alphabetic characters as well. Some notes:

 The formula for lowercase letters is the same as for

the uppercase letters except that 'a' and 'z' are used instead of 'A' and 'Z'.

slide-9
SLIDE 9

Lecture 4 ENGR/CS 101 Computer Science Session 9

Program Specification

 Now we will modify today's program to do the

following:

 Ask the user for an uppercase key letter (to represent shift

A-> key) then repeatedly ask for an uppercase line to encipher with this key until the user types ".."

 Display the corresponding ciphertext for each line. The

  • utput should preserve whitespace and non-alphabetic

characters.

 Example run (user input in bold):

Enter an uppercase key letter: I Enter an uppercase line to encipher (.. to quit): GO ACES! The corresponding ciphertext line is: OW IKMA! Enter an uppercase line to encipher (.. to quit): *CS IS FUN* The corresponding ciphertext line is: *KA QA NCV* Enter an uppercase line to encipher (.. to quit): ..

slide-10
SLIDE 10

Lecture 4 ENGR/CS 101 Computer Science Session 10

Program Design

 Identify the data being used

 No new data

 Write the steps an algorithm

  • 1. Ask user for shiftKey
  • 2. Ask user for plainText
  • 3. Compute shiftNumber = shiftKey - 'A'
  • 4. While plainText is not ".."

4.1 Output results label 4.2. For each letter in plainText 4.2.1. Compute the corresponding cipherLetter 4.2.2. Output the cipherLetter to the screen 4.3. Output a newline 4.4. Ask user for plainText

slide-11
SLIDE 11

Lecture 4 ENGR/CS 101 Computer Science Session 11

While-Loops

 For indexing a string, we know how many times

we want to repeat the encipher action, so we use a for-loop

 We don't know when a user may enter "..", so

we need to use a while-loop to implement this behavior.

 The syntax for the while loop is:

while (<condition>) { // do something }

slide-12
SLIDE 12

Lecture 4 ENGR/CS 101 Computer Science Session 12

While-Loops

 The condition of the while-loop is tested and if it

is true, the body of the loop is executed. When the condition becomes false, execution continues with the statement after the loop.

 For our program, if the user types in anything

except "..", we want to encipher the plaintext. We can do this by using the following condition:

while (plainText != "..")

slide-13
SLIDE 13

Lecture 4 ENGR/CS 101 Computer Science Session 13

In-class Exercise, Part 2

 Modify the program to repeatedly ask the user

for a line to encipher until the user enters ".."

 Some notes:

 The while-loop starts after the first time we ask the

user for the line to encipher.

 The rest of main program code goes in the while-

loop body.

 Asking the user for the next line to encipher must

be added to the end of the while-loop body, so that it is repeated.

slide-14
SLIDE 14

Lecture 4 ENGR/CS 101 Computer Science Session 14

Putting the Code Together

 Modified or added code in bold. This page is

the same except for the prompt.

// Variable declarations char shiftKey, // key letter cipherLetter; // result int shiftNumber; // # of places to shift string plainText; // user input // Ask the user for key letter and a line to encipher System.Console.Write("Enter an uppercase key letter: "); shiftKey = char.Parse(System.Console.ReadLine()); System.Console.Write ("Enter an uppercase line to encipher (.. to quit): "); plainText = System.Console.ReadLine();

slide-15
SLIDE 15

Lecture 4 ENGR/CS 101 Computer Science Session 15

Putting the Code Together

 This page has the added while-loop header

// Compute the # of places to shift shiftNumber = shiftKey - 'A'; while (plainText != "..") { // Display label for output System.Console.WriteLine ("The corresponding ciphertext line is: "); // For each letter in plainText for (int i = 0; i < plainText.Length; i++) { // Compute the corresponding cipher letter cipherLetter = ShiftLetter(plainText[i], shiftNumber);

slide-16
SLIDE 16

Lecture 4 ENGR/CS 101 Computer Science Session 16

Putting the Code Together

 This page has the end of the while-loop

//This is the continuation of the for-loop // Display the cipherLetter System.Console.Write(cipherLetter); } // end of for-loop // Display a newline System.Console.WriteLine(); // Ask user for next line to encipher System.Console.Write ("Enter an uppercase line to encipher (.. to quit): "); plainText = System.Console.ReadLine(); } // end of while-loop