Section 2 More Basics The char Data Type

Section 2 - More Basics

The char Data Type • Data type of a single character • Example char letter; letter = 'C';

A type character is encapsulated by single quotes ‘ Characters are encoded in the computer using a scheme where an integer represents a particular character Examples ' ' encoded as 32 '+' encoded as 43 'A' encoded as 65 'Z' encoded as 90 'a' encoded as 97 'z' encoded as 122 This allows us to compare characters.

Character Operations • Relational (aka comparison) operations are defined for characters types (as well as for other data types) • The result is either true or false – 'a' < 'b' is true – '4' > '3' is true – '6' <= '2' is false

Example - Read Characters To read a character from the keyboard, use char ch; cout << "Enter a character: "; cin >> ch;

Character Constants Explicit (literal) characters within single quotes 'a', 'D', '*' Special characters - delineated by a backslash Two character sequences (escape codes) Some important special escape codes t denotes a tab n denotes a new line \ denotes a backslash ' denotes a single quote " denotes a double quote To use, wrap up within single quotes 't' for the tab 'n' for the new line

Character Strings (aka Text Strings) • Can store a series of characters (aka string) in consecutive memory locations: "Hello“ • Stored with the null terminator, , at the end H e l l o • Comprises the characters between the " "

Literal String Constants • A literal string constant is a sequence of zero or more characters enclosed in double quotes – “Walk, don’t run" – “Bulgaria" – "" • String is not a fundamental type - It is a C++ defined class

• To access a library use a preprocessor directive to add its definitions to your program file #include <string> string s = "Sharp"; string t = “Dull";

Class string Used to represent a sequence of characters as a single text string Some definitions string Name = “Ivan"; string Decimal. Point = ". "; string empty = ""; string copy = name; string Question = '? '; // illegal

Class string • Some string member functions – size() determines number of characters in the string Saying = "Rambling with Gambling"; cout << Saying. size() << endl; // 22 – substr() determines a substring (Note first position has index 0) string Word = Saying. substr(9, 4); // with – find() computes the position of a subsequence int j = Saying. find("it"); // 10 int k = Saying. find("its"); // ?

Class string • Auxiliary operators – + string concatenation – join strings together string Part 1 = "Me"; string Part 2 = " and "; string Part 3 = "You"; string All = Part 1 + Part 2 + Part 3; – += compound concatenation assignment string The. Place = "Blagoevgrad"; The. Place += ", 2700";

Example string fname = “Ivan"; string lname = “Ivanov"; string name = fname + lname; cout << name << endl; name = fname + " " + lname; cout << name << endl; The output will be Ivanov

The bool Data Type • Represents values that are true or false • false is represented by 0, and true by 1 bool all. Done = true; bool finished = false; • What happens here? bool b = true; int i = b; cout << b << endl; cout << i << endl;

Logical Expressions Logical expressions have the one of two values - true or false - A rectangle has three sides - The instructor has a pleasant smile Three key logical operations And operations Or operation Not operation - negate

Type bool has two symbolic constants true false Logical (aka Boolean) operators The And operator is && The Or operator is || The Not operator is !

Example logical expressions bool P = true; bool Q = false; bool R = true; bool S = (P && Q); bool T = ((!Q) || R); bool U = !(R && (!Q));

Write a program that lets the user enter a year and checks whether it is a leap year. A year is a leap year if it is divisible by 4 but not by 100, or if it is divisible by 400. So you can use the following Boolean expression to check whether a year is a leap year: (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)

#include <iostream> using namespace std; int main() { int number; cout << "Enter an integer: "; cin >> number; if (number % 2 == 0 && number % 3 == 0) cout << number << " is divisible by 2 and 3. " << endl; if (number % 2 == 0 || number % 3 == 0) cout << number << " is divisible by 2 or 3. " << endl; if ((number % 2 == 0 || number % 3 == 0) && !(number % 2 == 0 && number % 3 == 0)) cout << number << " divisible by 2 or 3, but not both. " << endl; } return(0);

How would you write this expression in C++ 1 <= number. Of. Days. In. AMonth <= 31 Need to create a compound expression using Boolean operators

Relational Operators Equality operators == test for equality != test for inequality Examples int i = 32; int k = 45; bool q = (i == k); // false bool r = (i != k); // true

Comments Allow text commentary to be included in program Importance - Programs are read far more often than they are written - Programs need to be understood so that they can be maintained C++ has two conventions for comments // single line comment (preferred) /* long comment */ (save for debugging) Typical use Describing the working of parts of a program

Enumerated Types Allows the definition of programmer-defined types enum Day {MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY}; Once a type is defined, you can declare a variable of that type: Day day; The variable day can hold one of the values defined in the enumerated type. For example, the following statement assigns enumerated value MONDAY to variable day: day = MONDAY;

Enumerated Types As with any other type, you can declare and initialize a variable in one statement: Day day = MONDAY; Furthermore, C++ allows you to declare an enumerated type and variable in one statement. For example, enum Day {MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY} day = MONDAY;
- Slides: 24