640 likes | 783 Views
CHAPTER 4: The Basic of C. CSEB113 PRINCIPLES of PROGRAMMING CSEB134 PROGRAMMING I by Badariah Solemon. Topics. C Tokens Basic Data Types Variables Constants Reading Data from the Keyboard Arithmetic Operators and Expressions Single Character Data. Topic 1. C TOKENS.
E N D
CHAPTER 4: The Basic of C CSEB113 PRINCIPLES of PROGRAMMING CSEB134 PROGRAMMING I by Badariah Solemon BS (May 2012)
Topics • C Tokens • Basic Data Types • Variables • Constants • Reading Data from the Keyboard • Arithmetic Operators and Expressions • Single Character Data BS (May 2012)
Topic 1 C TOKENS BS (May 2012)
Tokens & Types of Tokens • Token – the basic element on a C program recognized by the compiler /* Example Case: Apples Author: MdmBadariahSolemon */ #include <stdio.h> int main() { int Qty; double Cost=0.0, Total=0.0; printf ("Enter quantity of apples purchased (in Kg):"); scanf("%d", &Qty); printf ("Enter the cost per Kg of apples (in RM per Kg):"); scanf("%lf",&Cost); Total = Cost * Qty; printf("\nTotal cost of apples = %.2f\n",Total); return 0; } identifiers string literals reserved words operator punctuation BS (May 2012)
1. Reserved Words • Keywords that identify language entities such as statements, data types, language attributes, etc. • Have special meaning to the compiler, cannot be used as identifiers in our program. • Should be typed in lowercase. • Must not be used as identifiers!! • Ex: auto, double, else, void, i BS (May 2012)
Task: Identify the Keywords BS (May 2012)
2. Identifiers • Words used to represent and reference certain program entities (variables, constant, functionnames, etc). • Also known as programmer-defined words. • Example: intmyName; • myNameis program variable. #define TAXRATE 26 • TAXRATEis a constant. void CalculateTotal(int value); • CalculateTotal is a function name. BS (May 2012)
Identifiers: Rules BS (May 2012)
Identifiers: Naming Styles • Avoid excessively short and cryptic names such as x, or wt. • Use reasonably descriptive name such as student_nameand StudentID. • Use userscores or capital letters to separate words in identifiers that consist of two or more words. • Example: StudentName, student_name, or studentname BS (May 2012)
3. String Literals • A sequence of any number of characters surrounded by double quotation marks “ ”. • Example: • Example of usage in C program: Produces output: “This is a string constant.” “Hello \”John”\.” printf(“My name is David Beckham.\n”); My name is David Beckham. BS (May 2012)
4. Operators • Tokens that result in some kind of computation or action when applied to variables or other elements in an expression. • Example of operators: * + = - / < > • Usage example: result = total1 + total2; BS (May 2012)
5. Punctuators • Symbols used to separate different parts of the C program. • These punctuators include: [ ] ( ) { } , ; “: * # • Usage example: • To be discussed when we come to the proper language feature in the coming chapters. main() { printf(“Testing.”); } BS (May 2012)
Exercise • Valid/invalid – variables or constant BS (May 2012)
Topic 2 Basic data types BS (May 2012)
Basic Data Types int number = 12; int sum = -3678; float short = 0.000983; float income = 1234567890.12; double bigvalue = 12E-3; //equals to 12x10-3 char initial = ‘B’; BS (Feb 2012)
Topic 3 variables BS (May 2012)
What are Variables? • Are memory locations within the computer which allows pieces of data to be stored. • The word variable comes from the word vary, which means that whatever you place within a variable can be changed. • A variable can be viewed as a container used to store things (numbers, character, string etc ) • Types of operations: • Declaring variables names • Assigning variable values • Manipulating variable values – ex: display on the screen BS (Feb 2012)
Declaring Variables • A variable is declared by specifying the DATA TYPE of the variable name • Ex: • Several variables of the same data type may be declared in the same statement. • Ex: Data Type Variable Name int Age; Variable Names Data Type int Age, Weight; Comma to separate variables BS (Feb 2012)
Assigning Values to Variable • A variable is assigned with a value using an assignment operator =. • Ex: • During program execution, may be conceptually viewed as: 17 is assigned to Age 60 is assigned to Weight Age = 17; Weight = 60; BS (Feb 2012)
Assigning Values to Variables During Declaration • Variables may be assigned with values even during the variables declaration. • Ex: Variable Name int Age = 17; Data Type int Age = 17, Weight = 60; Comma to separate variables BS (Feb 2012)
Printing Variable Values • Use the printf() function to display the value of a variable on the computer screen. • Syntax: • FormatString is a combination of characters, placeholdersand escape sequence. • PrintList is any constants, variables, expressions, and functions calls separated by commas. • Example: printf(FormatString, PrintList); placeholder int age = 80; float cgpa = 4.00; printf(“Your age: %d\n”, age); printf(“CGPA: %f\n”, cgpa); printf(“My CGPA: %.2f\n”, cgpa); Your age: 80 CGPA: 4.000000 My CGPA: 4.00 BS (Feb 2012)
Placeholders in printf() Function • Placeholders (or also known as format specifiers) always begin with the symbol % • Are used to format and display the variable/constant values on the screen • Common placeholders: Refer Table 12.2, pg 647 (Hanly & Koffman) BS (Feb 2012)
More About Printing Variable Values • Recall this syntax: • FormatString can have multiple placeholders if the Printlist in printf() function has several variables. • Example: printf(FormatString, PrintList); • #include <stdio.h> • main() • { int age = 80; float cgpa = 3.512, weight = 60.4778; printf(“Age: %d and CGPA: %.2f\n”, age, cgpa); printf(“CGPA: %.2f and Age: %d\n”, cgpa, age); printf(“CGPA: %.1f\tWeight2: %.2f\n”, cgpa, weight); printf(“Weight3: %.3f\t”, weight); printf(“Weight4: %.4f\n”, weight); • } BS (Feb 2012)
Exercise • Do hand-out exercise – declare & assign variables • What happen if you try to print an int with %f or a float with %d? • What is the output for the following program? • #include <stdio.h> • main() • { intyearS = 4; float cgpa = 3.88, gpa = 4.00; double printf(“How long it takes to complete ur study?\n%d\n”,yearS); printf(“GPA\t\tCGPA\n”); printf(“%.2f\t\t%.2f”,gpa, cgpa); printf(“Excellent!\n”); printf(“Now, test your skill\n”); printf(“CGPA in 1 decimal point = %.1f\n”, cgpa); printf(“CGPA = %f\n”, cgpa) } BS (May 2012)
Topic 4 Constants BS (May 2012)
Constants • Entities that appear in the program code as fixed values. • Types of operations: • Declaring and assigning constant values • Operating constant values • Almost similar treatment like variables but CANNOT change the values after declaration! BS (Feb 2012)
Declaring Constants • As constant macro – created using a preprocessor directives using define keyword • Ex: • Within a function using the const keyword. • Ex: #include <stdio.h> #define PI 3.14159 #define DAYS_IN_YEARS 365 main() { … DATA TYPE? #include <stdio.h> main() { const double KMS_PER_MILES = 1.609 … } BS (Feb 2012)
Types of Constants #define PI 3.412 const float PI = 3.412; #define VAL 0.5877e2 const double VAL = 0.5877e2; //stands for 0.5877 x 102 #define MAX 10 const int MIN = -90; enum Language { English Arabic Mandarin } #define LETTER ‘n’ const char NUMBER = ‘1’; BS (Feb 2012)
Printing Constant Values • Similar to printing variable values • What is the output of the program? #include <stdio.h> #define DAYS 365 #define VAL 0.5877 void main(void) { const double PI = 3.412; printf(“pi = %.3f\n”, PI); printf(“In a year, there are %d days\n”, DAYS); printf(“Value = %.4f\n”, VAL); } BS (Feb 2012)
Topic 6 Reading data from the keyboard BS (May 2012)
Using scanf() Function • To read data from the standard input device (usually keyboard) and store it in a variable. • The general format is pretty much the same as printf() function. • Syntax: • InputListone or more variables addresses, each corresponding to a placeholder in the FormatString • One placeholder for each variable in InputList. • The two or more variables in InputList must be separated by commas. • Each element of InputList must be an address of a memory cell(using prefix & address operator) scanf(FormatString, InputList); BS (Feb 2012)
Placeholders in scanf() Function • Are used to format and display the variable/constant values keyed-in by the user • Common placeholders in scanf() function are very similar to placeholders in printf() function: Refer Table 12.2, pg 647 (Hanly & Koffman) BS (Feb 2012)
Example int Age; float income; printf(“Enter your age: “); scanf(“%d”, &Age); printf(“Enter income: “); scanf(“%f”, &income); printf(“Your age is: %d\nIncome: %.2f”, Age, income); Address operator int Age; double income; printf(“Enter your age and income“); scanf(“%d %lf”, &Age, &income); printf(“Your age: %d\n”, Age); printf(“Your income: %f\n”, income); If you want the user to enter more than one value, you serialise the inputs. BS (Feb 2012)
Exercise • Write a simple C program that read two integer values and print them on the screen in one same line separated by one vertical tab. Follow this sample output: • Write another simple C program that read 3 real numbers and print them on the screen in reverse order. Follow this sample output: Enter first integer: 80 Enter second integer: 99 80 99 Enter three real numbers: 5.6 7.8 9.3 In reverse order: 9.3 7.8 5.6 BS (May 2012)
Topic 5 Arithmetic operators and expressions BS (May 2012)
Arithmetic Expressions • A syntactically correct and meaningful combination of operators and operands is known as anExpression. • ‘=’ is the basic assignment operator • Syntax: • Example: Variable = ArithmeticExpression; 12 is assigned to variable month operands month = 12; Expression: cityTax=CITYTAXRATE*grossIncome; arithmetic operator assignment operator BS (May 2012)
Arithmetic Operators • There are 2 types of arithmetic operators in C: • Unary operators are operators that require only one operand. • Example: • Binary operators are operators that require two operands. • Example: • Note that we CANNOT write arithmetic expressions like the following: operand second = -first; prs = -34; operands third = first / second; sum = 30 + 76; first / second = third; 30 + 76 = sum; X X BS (May 2012)
1. Unary Operators • Initial value of a is 10 and b is 5 postfix (after a variable) prefix (before a variable) BS (May 2012)
Prefix/Postfix Increment • a++ or ++a is equals to a = a + 1 but they work differently BS (May 2012)
Prefix/Postfix Decrement • Similarly, --a or a-- is equals to a = a - 1 but they work differently BS (May 2012)
2. Binary Operators • If all operands in an arithmetic expression are of type double/float, the result is also of type double/float except for modulus operator. • If all operands in an arithmetic expression are of type int, the result is also of type int. • Value of a is 9 BS (May 2012)
Modulus Operator (%) • You could only use modulus (%) operation on integer variables/integer division • Modulus will result in the remainder of an operation • Example: • 7 % 2 is 1 • But 2 % 7 is 2. Any idea why? 7/2 3 integral 2 7 6 - 1 7%2 remainder BS (May 2012)
Example • A simple C program that find an average of two real numbers. #include <stdio.h> void main(void) { float no1, no2, sum, avg; printf(“Enter three real numbers: “); scanf(“%f %f”, &no1, &no2); sum = no1 + no2; avg = sum / 2; printf(“Average: %.2f”, avg); } BS (May 2012)
Exercise • Write a simple C program that sum up 4 integer numbers and display the computed sum. • Covert the pseudocode/flowchart prepared to solve the following problems (refer slide 39 in Chapter 2) into complete C programs that: • compute and display the average of three numbers. • read the value of the height, width and length of a box from the user and print its volume. BS (May 2012)
Compound Assignment Operator • Are combinations operators with the basic assignment operator = • Initial value of a is 8: BS (May 2012)
Exercise • What is the output of the following program? #include <stdio.h> void main(void) { int first; printf("Enter a value: "); scanf("%d", &first); printf("\nNew value is: %d\n\n", first+=4); printf("\nNew value is: %d\n\n", first*=4); printf("\nNew value is: %d\n\n", first-=4); printf("\nNew value is: %d\n\n", first%=4); } BS (May 2012)
Operations of Mixed or Same Types • Examples: • 5 + 3 is 8 • 5/3 is 1 int int WHY? int float • 5.2 + 3.1 is 8.3 • 5.0/3.0 is 1.6 float float float • 5.2 + 3 is 8.2 • 5.0/3 is 1.6 • 5/3.0 is 1.6 float int BS (May 2012)
Operations of Mixed or Same Types • Assigning real values to intor float variables: • m = 5/3; • p = 5/3; • n = 5/3.0; • q = 5/3.0; m is 1 int int/int int 5/3 is 1 p is 1.0 float n is 1 int/float float 5/3 is 1.6 int q is 1.6 float BS (May 2012)
Type Casting • You can modify the way C uses types in arithmetic operations by using cast operators. The syntax: • Recall: • So what can you do to ensure that the operation produces 1.6instead of 1? • To ensure that you did not loose any data from the operation, you may apply type casting as follows: (type) expression 5/3 result in 1 • (float)5/3 • 5/(float)3 • (float)5/(float)3 • ((float)5)/((float)3) BS (May 2012)
Guidelines in Writing Arithmetic Expressions • If it is division operation, make sure it does not involve two integer variables or constants (unless you want the fractional part to be cut off) • When writing your code, a float type variable is on the left side of an assignment statement. Example: • When int type variable is on the left side of an assignment statement, make sure that the statement is meant to create an integer value. int sum = 87; float avg; avg = sum / 4; BS (May 2012)