580 likes | 748 Views
Fundamental of Programming (C). Lecture 3 Constants, Variables, Data Types, And Operations. Outline. C Program Data types Variables Constants Operations Arithmetic Operators unary operators operators that require only one operand binary operators operators that require two operands
E N D
Fundamental of Programming (C) Lecture 3 Constants, Variables, Data Types, And Operations
Outline • C Program • Data types • Variables • Constants • Operations • Arithmetic Operators • unary operators • operators that require only one operand • binary operators • operators that require two operands • Assignment Operators • Equality and Relational Operators • Logical Operators • Bitwise Operators • Conditional Operator • Comma Operator • sizeof
C Program Constants and variables main stdout (Screen) A B C D stderr (Screen) Instructions and operating procedures stdin (Keyboard) X Y Z Operations and functions
Simple Program • Examples: // int is return data type // main is entrance function int main() { statement 1; statement 1; // …. return 0; } // Simplest c program int main() { return 0; } /* Objective: print on screen */ #include <stdio.h> // preprocessor statements have not ; int main() { printf("welcome to c!!!"); return 0; // indicate that program ended successfully } welcome to c!!!
#include <stdio.h> // header file (preprocessor ) // calculating sum of two user input variables int main() { /* variable definition */ int a; int b; int result = 0; // get first variables form user printf("Enter first number:\n"); scanf("%d", &a); //get scoend variables form user printf("Enter scoend number:\n"); scanf("%d", &b); // sum of input variables result = a + b; printf("%d + %d = %d\n", a, b, result); system("Pause"); return 0; } • Examples: • Header file • Main function • Variables • Input and output • Process
#include <stdio.h> // (preprocessor ) #define PI 3.14 // PI constant (preprocessor ) // calculating area of circle int main() { /* variable definition */ float Radius; float Area = 0; // get radius of circle form user printf("Enter Radius :\n"); scanf("%f", &float ); // calculating area of circle Area = PI * Radius * Radius; printf(“Area = %f", Area ); system("Pause"); return 0; } • Examples: • Header file • Constant • Main function • Variables • Input and output • Process
#include <stdio.h> // (preprocessor ) #define PI 3.14 // PI constant (preprocessor ) // calculating area of circle int main() { /* variable definition */ float Radius; float Area = 0; // get radius of circle form user printf("Enter Radius :\n"); scanf("%f", & Radius); // calculating area of circle Area = PI * Radius * Radius; printf(“Area = %f", Area ); system("Pause"); return 0; } • Examples: • Header file • Constant • Main function • Variables • Input and output • Process
Variables • Have the same meaning as variables in algebra • Single alphabetic character • Each variable needs an identifier that distinguishes it from the others • a = 5 • x = a + b • valid identifier in C may be given representations containing multiple characters • A-Z, a-z, 0-9, and _ (underscore character) • First character must be a letter or underscore (no, _no 9no) • Usually only the first 32 characters are significant • There can be no embedded blanks (student no) • Identifiers are case sensitive (area, Area, AREA, ArEa) • Keywords cannot be used as identifiers
Naming Conventions • C programmers generally agree on the following conventions for identifier: • Use meaningful identifiers • Separate words within identifiers with: • underscores • capitalize each word • Examples: • surfaceArea • SurfaceArea • Surface_Area
Variable declaration • Before using a variable, you must declare it • Data_Type Identifier; • intwidth; // width of rectangle • float area; // result of calculating area stored in it • char separator;// word separator • Data_Type Identifier = Initial_Value; • intwidth = 10; // width of rectangle • floatarea = 255; // result of calculating area stored in it • charseperator = ‘,’; // word separator • Data_Type Identifier, Identifier, Identifier ,….; • intwidth, length, temporary; • float radius, area = 0;
Variable declaration • When we declare a variable • Space is set aside in memory to hold a value of the specified data type • That space is associated with the variable name • That space is associated with a unique address • Visualization of the declaration • intwidth = 95; // get width form user • // &width is 22ff40 • // *&width is 95 • // sizeof width is 4
Data types • Minimal set of basic data types • primitive data types • int • float • double • char • Void • The size and range of these data types may vary among processor types and compilers
Data type qualifiers • Modify the behavior of data type to which they are applied: • Sizequalifiers: alter the size of the basic data types: • short: multiply by 0.5 • long: multiply by 2 • short can be applied to: int • long can be applied to: intand double • Signqualifiers: can hold both positive and negative numbers, or only positive numbers.: • signed: + and - • unsigned: + • they can be applied to : intand char
Overflow and Underflow /* The # character indicate a pre-processor directive; it's an instruction to the compiler to make it do something The <> character tell C to look in the system area for the file stdio.h. If I had given the name #include "stdio.h" instead it would tell the compiler to look in the current directory /* #include <stdio.h> /* * Function main begins program execution * Semi-colon is statement terminator, so it is as a signal to the compiler for end of line */ intmain() { /* The 2 curly brackets { }, are used to specify the limits of the program block */ char letter = 'A'; // char variable to show ASCII code short shortVariable = 32769; // short variable for test overflow // printf command display string on the monitor printf("current value of shortVariable is = %d\n", shortVariable); printf("current value of letter is = %d", letter); printf("current value of letter is = %c", letter); system("PAUSE"); // pause the execution to show press any key … return 0; // indicate that program ended successfully } current value of shortVariable is = -32767 current value of letter is = 65 current value of letter is = A
Program Error • Compile-time or syntax • is caused when the compiler cannot recognize a statement • Run-time • E.g. division by zero • Logical • E.g. Overflow and Underflow
#include <stdio.h> // (preprocessor ) #define PI 3.14 // PI constant (preprocessor ) // calculating area of circle int main() { /* variable definition */ float Radius; float Area = 0; // get radius of circle form user printf("Enter Radius :\n"); scanf("%f", &float ); // calculating area of circle Area = PI * Radius * Radius; printf(“Area = %f", Area ); system("Pause"); return 0; } • Examples: • Header file • Constant • Main function • Variables • Input and output • Process
Integer constant value • Base 10: 1 915 +8 -90 • Base 8: 074 0123 084 • Base 16: 0x1 0X5 0x7fab • unsigned: 5000u 4U • long: 123456789l 56L • unsigned long: 536489ul • long long:5361254865LL 25lL • Example : • 0xABu 0123uL 017LL
floating-point constant value • A floating-point value contains a decimal point • 33.5 0.0 -657.983 .2 6. • For example, the value 150.4582 is represented in scientific notation as • 1.504582 X 102 • and is represented in exponential notation (by the computer) as • 1.504582E+02 • This notation indicates that 1.504582 is multiplied by 10 raised to the second power (E+02) • The E stands for “exponent”
Char and string constant value • Char char c; c = 'A'; // d = 65; • String printf("string is array of char!!!"); printf("example of escape sequence is \n");
Constant • Constants provide a way to define a variable which cannot be modified by any other part in the code • #define: without memory consume • const: memory consume • #define Identifier constant_value • #define PI 3.14 • #define ERROR "Disk error " • #define ERROR "multiline \ message" • #define ONE 1 #define TWO ONE + ONE
Constant • const [Data_Type] Identifier = constant_value; • const p = 3; // constint p = 3; • const p; p = 3.14; // compile error • const p = 3.14; // p = 3 because default is int • const float p = 3.14;
#include <stdio.h> // (preprocessor ) #define PI 3.14 // PI constant (preprocessor ) // calculating area of circle int main() { /* variable definition */ float Radius; float Area = 0; // get radius of circle form user printf("Enter Radius :\n"); scanf("%f", &float ); // calculating area of circle Area = PI * Radius * Radius; printf(“Area = %f", Area ); system("Pause"); return 0; } • Examples: • Header file • Constant • Main function • Variables • Input and output • Process
Operators Operator • Arithmetic Operators • unary operators • operators that require only one operand • binary operators • operators that require two operands • Assignment Operators • Equality and Relational Operators • Logical Operators • Bitwise Operators • Conditional Operator • Comma Operator • sizeof Width*High Operand
Arithmetic Operators • Unary Operator
PRE / POST Increment • Consider this example: • But if we have: int width = 9; printf("%d\n", width); width++; printf("%d\n", width); int width = 9; printf("%d\n", width++); printf("%d\n", width); 9 10 int width = 9; width++; printf("%d\n", width); printf("%d\n", width); int width = 9; printf("%d\n", ++width); printf("%d\n", width); 10 10
PRE / POST Increment int R = 10; int count = 10;
Arithmetic Operators • Binary Operators
Division • The division of variables of type integer will always produce a variable of type integer as the result • Example int a = 7, b; floatz; b = a / 2; z = a / 2.0; printf("b = %d, z = %f\n", b, z); Since b is declared as an integer, the result of a/2 is 3, not 3.5 • b = 3, z = 3.500000
Modulus • You could only use modulus (%) operation on integer variables (int, long, char) • z = a % 2.0; // error • z = a % 0; // error • Example int a = 7, b, c; b = a % 2; c = a / 2; printf("b = %d\n", b); printf("c = %d\n", c); Modulus will result in the remainder of a/2. - a/2 integral a%2 remainder
Assignment Operators • lvalue = rvalue; int i; float f; i = 2; // *&i = 2; 2 = i; // error: invalid lvalue in assignment f = 5.6; i = f; // i = 5; i = -5.9; // i = -5;
Assignment Operators • Assignment operators are used to combine the '=' operator with one of the binary arithmetic or bitwise operators • Example : • c = 9;
Precedence Rules • The rules specify which of the operators will be evaluated first • For example: x = 3 * a - ++b%3; c = b = d = 5;
Precedence Rules • how would this statement be evaluated? • : x = 3 * a - ++b % 3; • What is the value for X, for: a = 2, b = 4? x = 3 * a - ++b % 3; x = 3 * a - 5 % 3; x = 3 * a - 5 % 3; x = 6 - 5 % 3; x = 6 – 2; x = 4;
Precedence Rules • If we intend to have a statement evaluated differently from the way specified by the precedence rules, we need to specify it using parentheses ( ) • x = 3 * a - ++b % 3; • Consider having the following statement: • x = 3 * ((a - ++b)%3); • the expression inside a parentheses will be evaluated first • The inner parentheses will be evaluated earlier compared to the outer parentheses
Precedence Rules • how would this statement be evaluated? • x = 3 * ((a - ++b)%3); • What is the value for X, for: a = 2, b = 4? x = 3 * ((a - ++b) % 3); x = 3 * ((a - 5) % 3); x = 3 * ((-3) % 3); x = 3 * 0; x = 0;
Precedence Rules • how would this statement be evaluated? • x = 3 * ++a – b--%3; • What is the value for X, for: a = 2, b = 4? • x = 3 * ++a – b-- % 3; • x = 3 * ++a – b-- % 3; • x = 3 * ++a – 4 % 3; • x = 3 * 3 – 4 % 3; • x = 9 – 1; • x = 8; • b = b -1 , b = 3;
Equality and Relational Operators • Equality Operators: • Relational Operators:
Logical Operators • Logical operators are useful when we want to test multiple conditions • AND • OR • NOT • C has not bool data type, but: • 0: evaluate to false • If(0) printf("…"); • other: evaluate to true • If(1) printf(" …"); • If(-13) printf(" …");
&& - Logical AND • All the conditions must be true for the whole expression to be true • Example: if (a == 1 && b == 2 && c == 3) • means that the if statement is only true when a == 1 and b == 2 and c == 3 • If (a = 5) …
|| - Logical OR • The truth of one condition is enough to make the whole expression true • Example: if (a == 1 || b == 2|| c == 3) • means the if statement is true when either one of a, b or c has the right value
! - Logical NOT • Reverse the meaning of a condition • Example: if (!(radius > 90)) • Means if radius not bigger than 90.
Bitwise Operators • Apply to all kinds of int and char types: • signed and unsigned • char, short, int, long, long long
Bitwise Operators • Applicable for low level programming, e.g.: • Port manipulation • I/O programming • Usually: • &: set OFF one bit • |: set ON one bit • ^: reverse one bit
Examples • A = 199; • B = 90; • c = a & b = 66; • c = a | b = 233; • c = a ^ b = 157; • c = ~a = 56 • c = a << 2 = 28; • c = a >> 3 = 24;
Conditional Operator • The conditional operator (?:) is used to simplify an if/else statement • Condition ? Expression1 : Expression2; • The statement above is equivalent to: if (Condition) Expression1; else Expression2; • Which are more readable?
Conditional Operator • Example: if/else statement: if (total > 12) grade = ‘P’; else grade = ‘F’; conditional statement: (total > 12) ? grade = ‘P’: grade = ‘F’; OR grade =( total > 12) ? ‘P’: ‘F’;
Conditional Operator • Example: • if/else statement: • if (total > 12) • printf(“Passed!!\n”); • else • printf(“Failed!!\n”); • Conditional Statement: • printf(“%s!!\n”, total > 12 ? “Passed”: “Failed”);