C_Basics.pdf
Document Details
Uploaded by CherishedPersonification
SRM Institute of Science and Technology
Tags
Full Transcript
Programming with C - Lab WEEK - 2 1 Algorithms & Flowcharts 2 Introduction to C, History, Steps of Learning C 3 C – Tokens, Data Types - Format Specifiers, I/O Statements 4 Structure of C...
Programming with C - Lab WEEK - 2 1 Algorithms & Flowcharts 2 Introduction to C, History, Steps of Learning C 3 C – Tokens, Data Types - Format Specifiers, I/O Statements 4 Structure of C Program, Sample C Programs ------------------ Algorithms & Flowcharts Algorithms Algorithm is a method of representing the step-by-step logical procedure for solving a problem. A program written in a non-computer language is called an algorithm. It is a step-by-step method of performing any task. These are one of the most basic tools that are used to develop the program solving logic. They can have steps that repeat or require decisions until the task is completed. PROPERTIES An algorithm must possess the following properties: 1) Fitness: An algorithm must terminate in a finite number of steps. 2) Definite: By definite we mean that each step of algorithm must be precisely defined such that there is no ambiguity or contradiction. 3) Effectiveness: Each step must be effective, easily converted into program statement and can be performed exactly in a finite amount of time. 4) Generality: The algorithm must be complete so that it will work successfully in solving all the problems of particular type for which it is defined. 5) Input/Output: Each algorithm must take zero, one or more quantities an input data and produce one or more output values. While writing an algorithm we can concentrate only on the logic and not on language syntax and once the algorithm is written we can code the algorithm in computer language. Example 1: Write an algorithm to find the sum and average of two numbers Step 1. Read the numbers a, b Step 2. Compute the sum of a & b Step 3. Store the result in variable s Step 4. Divide the sum s by 2 Step 5. Store the result in variable avg Step 6. Print the value of s and avg Step 7. End of program. Prepared by IT & CSE Page 24 Programming with C - Lab Example 2: Find Area, Diameter and Circumference of a Circle. Step 1: Start Step 2: Initialize PI to 0 Step 3: Read radius of the circle Step 4: Calculate the product of radius with itself and PI value Step 5: Store the result in variable area Step 6: Calculate the product of radius with 2 Step 7: Store the result in variable diameter Step 8: Calculate the product of PI and diameter value Step 9: Store the result in variable circumference Step 10: Print the value of area, diameter and circumference Step 11: Stop Example3: Find Area and Circumference of a Rectangle. Step 1: Start Step 2: Read the values of length and breadth Step 3: Calculate the product of length and breadth Step 4: Store the result in variable area Step 5: Calculate the sum of length and breadth Step 6: Store the result in variable temp Step 7: Calculate the product of 2 and temp Step 8: Store the result in variable circumference Step 9: Print the value of area and circumference Step 10: Stop Flowcharts INTRODUCTION The flowchart is a mean of visually presenting the flow of data through an information processing systems, the operations performed within system and the sequence in which they are performed. A flowchart is a pictorial representation of an algorithm in which the steps are drawn, in the form of different shapes of boxes and the logical flow indicated by inter connecting arrows. Meaning of a Flowchart A flowchart is a diagrammatic representation that illustrates the sequence of operations to be performed to get the solution of a problem. Once the flowchart is drawn, it becomes easy to write the program in any high level language. Hence, it is correct to say that a flowchart is a must for the better documentation of a complex program. ADVANTAGES: Reasons for using flowcharts as a problem-solving tool are: Makes logic clear Communication: flowcharts are a good way of communicating the logic of a system to all concerned. Using in coding, flowcharts act as a guide during the system’s analysis and program development phase. Prepared by IT & CSE Page 25 Programming with C - Lab Effective analysis: problem can be analyzed in more effective way. Efficient program maintenance: The maintenance of a program becomes easy with the help of flowchart. Proper documentation: flowcharts serve as a good program documentation. DISADVANTAGES: a) Complex logic: Sometimes, the program logic is quite complicated. In this case, flowchart becomes complex and clumsy. b) Alterations and modifications: If alterations are required the flowchart may require re-drawing completely. c) The essentials of what is done can easily be lost in the technical details of how it is done. SYMBOLS: On flowcharts different geometric shapes are used called flowchart symbols. Some standard symbols for drawing flowcharts are: Basic Flowchart Shapes Prepared by IT & CSE Page 26 Programming with C - Lab The basic 5 flowchart symbols are 1) Terminal block 2) Input / Output 3) Process block 4) Decision block 5) Flow lines. GUIDELINES: The following are some guidelines in flowcharting: a) The flowchart should be clear, neat and easy to follow. There should not be any room for ambiguity in understanding the flowchart. b) The usual direction of the flow of a procedure or a system is from left to right or top to bottom. c) Only one flow line should come out or from a process symbol. d) Only one flow line should enter a decision symbol, but two or three flow lines, one for each possible answer, should leave the decision symbol. Three-way branch decision Two-way branch decision e) Only one flow line is used in conjunction with terminal symbol. Prepared by IT & CSE Page 27 Programming with C - Lab f) Write within standard symbols briefly. As necessary, you can use the annotation symbol to describe data or computational steps more clearly. g) If the flowchart becomes complex, it is better to use connector symbols to reduce the number of flow lines. Avoid the intersection of flow lines if you want to make it more effective and better way of communication. Connector h) Ensure that the flowchart has a logical start and finish. i) It is useful to test the validity of the flowchart by passing through it with a simple test data. Example 1. Draw a flowchart to find the sum and average of two numbers. Example 2. Draw a flowchart to find the largest of three numbers. Prepared by IT & CSE Page 28 Programming with C - Lab Example 3: Draw a flowchart to compute the final price of an item after figuring in sales tax. Example 4: Write a pseudo code to check whether a student is passed or not. Differences between Algorithm and Flowchart Algorithm Flowchart Step by step procedure for solving a Pictorial representation of an algorithm problem Written in English-like language with Steps of algorithm are drawn in the words form of shapes of boxes and logical flow with arrows. Explains how a certain process is May not have detailed instructions followed or a problem solved about how the tasks are done. Prepared by IT & CSE Page 29 Programming with C - Lab Introduction to C Language, History, Steps in Learning Language is the expression of thought in a specified way. It is a body of words, and set of methods of combining them (called grammar), understood by a community and used as a form of communication. INTRODUCTION C is a general-purpose programming language initially developed by Dennis Ritchie between 1969 and 1973 at Bell Labs. C is a robust language whose rich set of built-in functions and operators can be used to write any complex program. C is one of the most widely used programming languages of all time. Origin of C Year Language Developed By Remarks 1960 ALGOL60 International too general, too abstract, not Committee a specific language 1963 CPL(Combined Cambridge University too difficult to learn and Programming Language) hard to implement 1967 BCPL(Basic Combined Martin Richard, could deal only special Programming Language) Cambridge University problem 1970 B Ken Thompson, AT & could deal only special T Bell Laboratories problem, did not support various data types 1972 C Dennis Ritchie, AT & T programming efficiency & Bell Laboratories relatively good machine efficiency & support various data types. C was the offshoot of the earlier languages ‘BCPL’ and ‘B’. It supports high level features with commands like if, else, goto etc making it convenient to use. It also supports low- level features like manipulation of bits and addressing memory location directly by using pointers. C may be called as middle level programming language. Prepared by IT & CSE Page 30 Programming with C - Lab C compiler combines the capabilities of an assembly language with features of high-level language and therefore it is well suited for writing both system software and business packages. Application Areas of C Initially C was used to design the system software like 90% of UNIX operating system is written in C language. for designing application software In writing Device Drivers. In INTERNET protocols. In developing translators. In print spoolers and other utilities. Getting Started With C Communicating with a computer involves speaking the language the computer understands, which immediately rules out English as the language of communication with computer. However, there is close analogy between learning English language and learning C language. The classical method of learning English is to first learn the alphabets used in the language, then learn to combine these alphabets to form words, which in turn are combined to form sentences and sentences are combined to form paragraphs. Learning C is similar and easier. Instead of straight-away learning how to write programs, we must first know what alphabets, numbers and special symbols are used in C, then how using them constants, variables, keywords, and reserved words are constructed, and finally how are these combined to form an instruction. A group of instructions would be combined later on to form functions or program. Steps in learning English Language: Sentences Vocabulary Essays or Alphabets [grammer Paragraphs Books [Words] Story rules] Steps in learning C language: Vocabulary Keywords, Instructions Character Reserved Functions Programs Applications Set [syntax rules] Words, Identifiers Prepared by IT & CSE Page 31 Programming with C - Lab Character Set Any symbol is referred as character in C language. A character denotes any alphabets (A,B, … Z or a,b, … z), digits (0,1,2,3,4,5,6,7,8,9) or special symbols (!@#~`%^&*(){}- =+_{}[]|\”/’:;) used to represent information. This character set is used to form vocabulary of C (constants, variables and keywords). ASCII Table ASCII Symbol Description ASCII Symbol Description ASCII Symbol Description 32 Space 64 @ at symbol 96 ` grave accent 33 ! exclamation 65 A 97 a 34 " double quotes 66 B 98 b 35 # number sign 67 C 99 c 36 $ dollar sign 68 D 100 d 37 % percent sign 69 E 101 e 38 & ampersand 70 F 102 f 39 ' single quote 71 G 103 g opening 40 ( 72 H 104 h parenthesis closing 41 ) 73 I 105 i parenthesis 42 * asterisk 74 J 106 j 43 + plus sign 75 K 107 k 44 , comma 76 L 108 l 45 - Minus/hyphen 77 M UPPER CASE 109 m LOWER CASE ALPHABETS ALPHABETS 46. period 78 N 110 n 47 / slash 79 O 111 o 48 0 zero 80 P 112 p 49 1 one 81 Q 113 q 50 2 two 82 R 114 r 51 3 three 83 S 115 s 52 4 four 84 T 116 t 53 5 five 85 U 117 u 54 6 six 86 V 118 v 55 7 seven 87 W 119 w 56 8 eight 88 X 120 x 57 9 nine 89 Y 121 y 58 : colon 90 Z 122 z 59 ; semicolon 91 [ opening bracket 123 { opening brace 60 < less than sign 92 \ backslash 124 | vertical bar 61 = equal sign 93 ] closing bracket 125 } closing brace 62 > greater than 94 ^ caret 126 ~ equivalency-tilde 63 ? Question mark 95 _ underscore Prepared by IT & CSE Page 32 Programming with C - Lab C TOKENS In a C Program, the smallest individual units are known as C -Tokens. Programs are written using these tokens and syntax of language. There are totally six tokens. They are: 1. Keywords 2. Identifiers 3. Constants 4. Strings 5. Special Symbols C-Tokens Special Keywords Identifiers Constants Strings Operators Symbols Keywords: Keywords are those words, whose meaning is already known to the C compiler i.e. they are predefined words. The keywords cannot be used as variable names. There are only 32 keywords available in C. A keyword can’t be used as a variable name because if we do so, we are trying to assign a new meaning to the keyword. int struct for static float union switch register char typedef case extern double enum default void signed if break volatile unsigned else continue sizeof long while goto const short do auto return Identifiers: Identifiers refer to the names of variable, functions and arrays. These are user-defined names and consist of a sequence of letters and digits, with a letter as a first character. Both uppercase and lowercase letters are permitted, although lowercase letters are commonly used. The underscore character is also permitted in identifiers. Prepared by IT & CSE Page 33 Programming with C - Lab Constants: Constants in ‘C’ refer to fixed values that do no change during the execution of a program. Constant is a memory location in which a value can be stored and this cannot be altered during the execution of program. ‘C’ supports several types of constants. They are illustrated below. Constants Numeric Character Logical Single Integer Real String Character Integer Constants: An integer constant refers to a sequence of digits. There are three types of integers, namely binary, decimal, octal and hexadecimal. Binary Numbers: A Binary Number is made up of only 0s and 1s. Example: 110100 Representation of a Binary Number MSB Binary Digit LSB 8 7 6 5 4 3 2 1 2 2 2 2 2 2 2 2 20 256 128 64 32 16 8 4 2 1 Decimal integers consist of a set of digits, 0 through 9, preceded by an optional - or + sign. Spaces, commas and non-digit characters are not permitted between digits. Valid Examples Invalid Examples 123 15 750 -321 20,000 0 2.5 654321 $1000 +78 Conversion of Binary to Decimal 1011 You would this interpret in decimal as: Prepared by IT & CSE Page 34 Programming with C - Lab Eights Fours Twos Ones (8) (4) (2) (1) 1 x 23 plus 0 x 22 plus 1 x 21 plus 1 x 20 = 1x8 plus 0x4 plus 1x2 plus 1x1 = 8 plus 0 plus 2 plus 1 The total is: 11 (in decimal) which equal 8 + 0 + 2 + 1 In other words, 10112 = 1110 Conversion of Decimal to Binary Octal Integers constant consists of any combination of digits from 0 through 7 with a 0 at the beginning. Octal is fancy for Base Eight meaning eight symbols are used to represent all the quantities. They are 0, 1, 2, 3, 4, 5, 6, and 7. Some examples of octal integers are 026, 0, 0347, and 0676 Octal 0 1 2 3 4 5 6 7 10 11 12… 17 20… 30… 77 100 Decimal 0 1 2 3 4 5 6 7 8 9 10… 15 16… 24… 63 64 Octal to Decimal Conversion Just like how we used powers of ten in decimal and powers of two in binary, to determine the value of a number we will use powers of 8 since this is Base Eight. Consider the number 3623 in base eight. 83 82 81 80 3 6 2 3 1536+384+16+3 1939 Hexadecimal integer constant is preceded by OX or Ox, they may contain alphabets from A to F or a to f. The alphabets A to F refer to 10 to 15 in decimal digits. The hexadecimal system is Base Sixteen. Examples of valid hexadecimal integers are 0X2, 0x8C, 0Xbcd, and 0x Prepared by IT & CSE Page 35 Programming with C - Lab Hexadecimal 9 A B C D E F 10 11… 19 1A 1B 1C… 9F A0 Decimal 9 10 11 12 13 14 15 16 17 25 26 27 28 159 160 Digits are explained as powers of 16. Consider the hexadecimal number 2DB7. 163 162 161 160 2 D B 7 8192+3328+176+7 11703 Real Constants: Real Constants consists of a fractional part in their representation. Integer constants are inadequate to represent quantities that vary continuously. These quantities are represented by numbers containing fractional parts like 26.082. Examples of real constants are 0.0026, -0.97, 435.29, +487.0 These numbers are shown in decimal notation, having a whole number followed by a decimal point and the fractional part. It is possible to omit digits before the decimal point or digits after the decimal point. That is, 215.;.95; -.71; +.5 are all valid real numbers. A real number may also be expressed in exponential (or scientific) notation. For example, 215.65 may be written as 2.1565e2 in exponential notation, e2 means multiply by 102. The general form is: The is either a real number expressed in decimal notation or an integer. The is an integer number with an optional plus and minus sign. The letter separating the mantissa and the exponent can be written in either lowercase or uppercase. The exponent causes the decimal point to "float", this notation is said to represent a real number in floating point form. Examples of legal floating point constants are: 0.65e4, 12e-2, 1.5e+5, 3.18E3, -1.2E-1 White spaces are not allowed. Exponential notation is useful for representing numbers that are either very large or very small is magnitude. E.g. 7500000000 --> 7.5e9 or 75e8. Single Character Constants A singe character constant contains a single character enclosed within a pair of single quote marks. Examples of single character constants are: '5', 'x', ' ', ';'. The character constant '5' is not same as the number 5. Prepared by IT & CSE Page 36 Programming with C - Lab String Constants A string constant is a sequence of character enclosed in double quotes. The characters may be letters, numbers, special characters and blank space. Examples are "Hello!", "1987", "WELL DONE", "5+3", "X" Logical Constant: A logical constant can take either a true or a false as value. In C, Zero (0) represents false value. Any non-zero value such as 1 represents true value. Backslash Character Constants [Escape Sequences] Backslash character constants are special characters used in output functions. Although they contain two characters they represent only one character. Given below is the table of escape sequence and their meanings. Constant Meaning '\a' Audible Alert (Bell) '\b' Backspace '\f' Form feed '\n' New Line '\r' Carriage Return '\t' Horizontal tab Constant Meaning '\v' Vertical Tab '\'' Single Quote '\"' Double Quote '\?' Question Mark '\\' Back Slash '\0' Null Variables: In C, a quantity, which may vary during the program execution, is called a variable. Variable names are the names given to the memory locations of a computer where the variable value is stored. A variable is a name that is used to store data value and is allowed to vary the value during the program execution. A variable is able to hold different values during execution of a program, where as a constant is restricted to just one value. Variable name Prepared by IT & CSE Page 37 Programming with C - Lab can be chosen by the programmer in a meaningful way so as to reflect its nature in the program. Length of C variable name can be upto 8 characters and some translators permit even a higher length (32). It may take different values at different times during program execution. Variable names may consist of letters, digits, and underscore subjected to following conditions: They must begin with a letter or underscore (_), followed by any number of letters, digits, or underscores. Uppercase is different from lowercase, so the names total, Total, and TOTAL specify three different variables. The variable name shouldn’t be a keyword. Blank spaces are not allowed. The length should be normally 8 characters (since only the first 8 characters treated as significant by many compilers). The variable names are case sensitive. The variables are defined at the beginning of the block. For example, in the equation 2 + 3 = 10; since x and y can change, they are , whereas 2,3 and 10 cannot change, hence they are. The total equation is known as. Valid variable names: Alpha, X, fyear_9899, matrix, income DATATYPES A C language programmer has to tell the system before-hand, the type of numbers or characters he is using in his program. These are data types. There are many data types in C language. A C programmer has to use appropriate data type as per his requirement. Data type is the instruction to the compiler telling about what type of value will be stored in a memory location and also to specify the amount of memory required for location. C language data types can be broadly classified as Primary data types Derived data types User-defined data types Prepared by IT & CSE Page 38 Programming with C - Lab Primary Data Types Integer Type: Integers are whole numbers with a machine dependent range of values. Generally, integers occupy one word of storage and since word sizes of machines vary (typically, 16 or 32 bits), the size of an integer that can be stored depends on the computer. C has 3 classes of integer storage namely ℎ ,. All of these data types have signed and unsigned forms. Signed numbers are positive or negative and one bit is used for sign and rest of the bits for the magnitude of the number. Unsigned numbers are always positive and consume all the bits for the magnitude of the number. A ℎ represents small integer values and requires half the space than normal integer values. The are used to declare a longer range of values. Size Size Type Range (in Bytes) (in Bits) 2 16 −32768 32767 2 16 0 65535 ℎ 1 8 −128 127 ℎ ℎ 1 8 0 255 4 32 −2147483648 2147483647 4 32 0 4294967295 To find the range of these signed data type we use the formula, −2 +2 −1 To find the range of these unsigned data type we use the formula, 0 2 −1 Character Data Type A single character can be defined as a character ( ℎ ) type data. Characters are usually stored in 8 bits (1 byte) of internal storage. The qualifier signed or unsigned may be explicitly applied to char. Unsigned characters have values between 0 to 255, Signed characters have values from -128 to +127. Size Size Type Range (in Bytes) (in Bits) ℎ ℎ 1 8 −128 127 ℎ 1 8 0 255 Prepared by IT & CSE Page 39 Programming with C - Lab Floating Point Types Floating point numbers are stored in 32 bits (on all 16bit and 32bit machines), with 6 digits of precision. Floating point numbers are defined in C by the keyword. When the accuracy provided by a float number is not sufficient, the type can be used to define the number. This is also called long float. A data type number uses 64 bits giving a precision of 14 digits. These are known as double precision numbers. The double represents the same data type that float represents, but with greater precision. To extend the precision further, we may use long double which uses 80 bits. Size Size Type Range (in Bytes) (in Bits) 4 32 3.4 − 38 3.4 + 38 8 64 1.7 − 308 1.7 + 308 10 80 3.4 − 4932 1.1 + 4932 Note: The size and range of Data Types vary from one machine to another. The above specified size and range of Data Types are on a 16-bit Machine. Void Data Type C also has a special data type called , which indicates that any data type i.e., no data type does not describe the data items. The size of data type is 0 bytes. Derived Data Types These are also called secondary data types that include , , and. Type Declaration Instruction: A variable can be used to store a value of any data type. This instruction is used to declare the type of variables being used in the program. The syntax for declaring a variable is _ , … ; variable1, variable2,...variablen are the names of variables. Variables are separated by commas(,). Declaration statement must end with a semicolon(;). E.g.: int count; int num,total; char gender; double ratio; float rs; Several subtle variations of the type declaration instruction are 1) While declaring the type of variable we can also initialize value = 10, = 35; Prepared by IT & CSE Page 40 Programming with C - Lab = 1.5, = 1.99 + 2.4 ∗ 1.44; 2) The order in which we define the variables is sometimes important sometimes not. = 10, = 35; is same as = 35, = 10; However, = 1.5, = + 3.1; is not same as = + 3.1, = 1.5; (as we are trying to use a before defining it). 3) The following statements would work , , , ; = = = 10; & the following statements would not work = = = = 10; as we are trying to use b (to assign to a) before defining it. Declaring variable as constant The value of certain variables might remain constant during the execution of a program which can be achieved with the qualifier const at the time of initialization. E.g. _ = ; The keyword const tells the compiler that the value of the int variable class_size must not be modified by the program. Declaring variable as volatile Another qualifier volatile can be used to tell explicitly the compiler that a variable's value may be changed at any time by external sources (from outside the program). E.g. ; The value of date may be altered by some external factors. When we declare a variable as volatile, the compiler will examine the value of the variable each time whether any external alteration has changed the value and can be modified by its own program. If the value must not be modified by the program while it may be altered by some other process, then we may declare the value as both const and volatile as = ; Format Codes: Format codes are coding characters used to represent the data types. They are needed must to print the output in a formatted manner. It is also called control string, or format specifiers or format strings. Code Description %c Single Character %d Decimal Integer %i Decimal, Hexadecimal or Octal Integer %h Short Integer Prepared by IT & CSE Page 41 Programming with C - Lab %e, %f, %g Floating point value %ld Long integer %lu Unsigned long int %o Octal Integer %s String or sequence of Characters %u Unsigned decimal integer %x Unsigned Hexadecimal integer Basic Structure of C Program The basic structure of the ‘C’ program consists of Documentation Section Link Section Definition Section Global Declaration Section main () function section { Declaration part; Executable part; } Sub program section Function 1 Function 2 : Function n Documentation section This section consists of a set of comment lines giving the name of the programmer, name of the program and other details, which the programmer would like to use later. It starts with ‘\*’ and ends with ‘*/’. Link section This section provides instructions to the compiler to link functions from system library. It is as “#include”. Definition section This section defines all the symbolic constants. Global Declaration Section: There are some variables that are used in more than one function, such variables are called global variables & are declared in the global declaration section. main() function Section: Every C program must have one ‘main’ function section. This section contains two parts i.e. declaration part and executable part. The declaration part declares all the Prepared by IT & CSE Page 42 Programming with C - Lab variables used in the executable part. These two parts must appear between opening and closing braces {}. Declaration & Execution Parts: The program execution begins at opening brace and ends at the closing brace. All statements in the declaration and executable part ends with semicolon (;). Sub Program functions: The sub program functions contain all the user-defined functions that are called in the main function. User defined functions are generally placed immediately after the main function. The following are the rules to write C Programs: 1. All C statements must end with semicolon(;). 2. C is case-sensitive, i.e., upper and lower case characters are different. Generally, the statements are typed in lower case. 3. A C statement can be written in one line or it can split into multiple lines. 4. Every C program is a collection of one or more functions. There must be only function with the name as main as program execution starts and ends with main() function. 5. The function's body must be enclosed within braces. Braces must always match upon pairs i.e., every opening brace { must have a matching closing brace } to avoid confusions and eliminate errors. 6. To make programs easily understandable, comments can be added. Comments cannot be nested. For Example, */ (this cannot be used). A comment can split into more than one line. Execution of C Program in TurboC: The following are the steps to be followed in writing and running a C program: a) Creation of Source Program: Create a C program file in various C compilers that are available under MS-DOS, Turbo C Editor etc. b) Compilation of the Program: Turbo C compiler is user friendly and provides integrated program development environment. Thus, selecting key combination can do compilation. That means press Alt+F9 for compilation. c) Program Execution: In Turbo C environment, the RUN option will do the compilation and execution of a program. Press Ctrl+F9 for execution. d) Result Display: In Turbo C environment, the output of the executed program can be viewed. Press Alt+F5 to view the output. Prepared by IT & CSE Page 43 Programming with C - Lab Different types of files in TurboC In C language, every source file is saved with an extension of “.c”. The compiler automatically converts this source file into machine code at compile time and creates an executable file. The machine code is saved with an extension “.obj”. The executable file is saved with an extension of “.exe”. Execution of C program in UNIX/LINUX systems We use an editor in the UNIX system to create a C source program. The following command is used to compile C program "helloworld.c" Compilation Command: gcc helloworld.c -o helloworld This command compiles the c program and generates an executable file "helloworld" for running the program. In the command if we don't specify "-o helloworld" it creates an executable file "a.out" The following command is used to execute C program "helloworld.c" ./a.out - to execute the program if executable file name is not specified. ./helloworld - to execute the program if executable file name is specified. I/O Functions All most all the programming languages are designed to provide I/O activity. Input refers to the process through which data is supplied to the system. On the other hand, output refers to the provision which is made available by the computer to the user. In C the input/output functions takes two forms they are: (1) Formatted (2) Unformatted Formatted I/O Functions The Formatted input/output functions are standard functions capable to read and write all types of data values. They require conversion symbol to identify the data type. So they can be used for both reading and writing of all types. The formatted functions also return values after the execution. The formatted I/O functions supported by C are printf() and scanf(). printf() This is an output statement. To output data on to a screen, we use the standard output library function, represented by the word "printf" followed by the open and closing parentheses (). It is used to display the value of a variable or a message on the screen. Syntax: printf(""); printf("", argument list separated with commas); Prepared by IT & CSE Page 44 Programming with C - Lab Example: printf("This is C statement"); printf("The number is %d", a); printf("The number %d is equal to %d", 10,10); printf("The number %d is not equal to %d", x,y); scanf() This is an input statement. Data can be stored in the variables after accepting the values from the user through the keyword, by using a standard library function for input operation. This allows a program to get user input from the keyboard. This means that the program gets input values for variables from users. Syntax: scanf("",list of address of variables separated by commas); Example: scanf("%d", &a); scanf("%d %c %f", &a, &b, &c); 1. To print a message "Hello World" on the screen #include #include main() { clrscr(); printf("Hello World"); } Output: Hello World 2. To Display Multiple Statements #include #include main() { clrscr(); printf("Name: Sachin Tendulkar"); printf("\nQualification: Degree"); printf("\nAddress: Mumbai") printf("\nWork: Cricket Player"); } Prepared by IT & CSE Page 45 Programming with C - Lab Output: Name: Sachin Tendulkar Qualification: Degree Address: Mumbai Work: Cricket Player 3. To Initialize int, char, float data types #include #include main() { int n=78; float j=3.0; char x='y'; clrscr(); printf("Integer=%d\tFloat Value=%f\tCharacter=%c",n,j,x); } Output: Integer=78 Float Value=3.0 Character=y 4. To accept the values of int, float, char data types and display them. #include #include main() { char x; int num; float j; clrscr(); printf("Enter Character: "); scanf("%c",&x); printf("Enter Integer Value: "); scanf("%d",&num); printf("Enter Float Value: "); scanf("%f",&j); printf("Integer=%d\tFloat Value=%f\tCharacter=%c",num,j,x); } Output: Enter Character: a (Enter) Enter Integer Value: 20 (Enter) Prepared by IT & CSE Page 46 Programming with C - Lab Enter Float Value: 100 (Enter) Integer=20 Float Value=100.0 Character=a Unformatted I/O Functions A simple reading of data from keyboard and writing to I/O device, without any format is called unformatted I/O functions. The unformatted input/output functions only work with the character data type. They do not require conversion symbol for identification of data types. There is no need to convert the data. The unformatted functions also return values, and return value is always the same. The unformatted I/O functions are classified into (1) Character I/O and (2) String I/O Character I/O These read and print single character. (1) getchar() It returns a single character accepted through the keyboard, after the confirmation key is pressed and can be assigned to the variable. The function does not require any parameter though a pair of empty parentheses must follow the word getchar. Syntax: character_variable = getchar(); Example: char c; c = getchar(); (2) getch() & getche() These functions read any alphanumeric characters from the standard input device. getch() is a standard library function used for single character input, but it does not wait for enter key and neither does it display the character on the screen. Syntax: character_variable = getch(); getche() is a standard library functions used for single character input same as getch() function. It also does not wait for enter key but echoes on the screen. It can be used for getting the result directly on the screen. Syntax: character_variable = getche(); Example: char c; c = getche(); c = getch(); (3) putchar() It transmits a single character to a standard output device. The character being transmitted will normally be represented as a character type variable. It must be expressed as a parameter to the function, enclosed in parentheses, followed by the word putchar. Prepared by IT & CSE Page 47 Programming with C - Lab Syntax: putchar(character_variable/expr); Example: char c; c = getchar(); putchar(c); (4) putch() This function prints any alphanumeric character taken by the standard input device. Syntax: putch(character_variable/expr); Example: Program to accept characters and display them. #include #include main() { char x,y,z; clrscr(); printf("Enter 1st character: "); x = getchar(); printf("Enter 2nd character: "); y = getche(); printf("\nEnter 3rd character: "); z = getch(); printf("\nFirst character is "); putchar(x); printf("\nSecond character is "); putch(y); printf("\nThird character is "); putchar(z); } Output: Enter 1st character: k Enter 2nd character: l Enter 3rd character: First character is k Second character is l Third character is ; String I/O In order to read and write string of characters the functions gets() and puts() are used. gets() function reads the string and puts() function takes the string as argument and writes on the screen. Prepared by IT & CSE Page 48 UNIT- 2 WEEK – 3 1 Operators in C, their Precedence and Associativity, 2 Arithmetic Expressions/Instructions 3 Type casting, Math.h functions 4 Sample C Programs ------------------ Operators in C An operator is a symbol that tells the computer to perform certain mathematical or logical manipulations (calculations). C is extremely rich in built-in operators. Operators are used in program to manipulate data and variables. Some operators require two operands, while others act upon only one operand. C operators are classified as follows: 1) Arithmetic Operators 2) Relational Operators 3) Logical Operators 4) Assignment Operator 5) Increment & Decrement Operator 6) Conditional Operator 7) Bit wise Operators 8) Special Operators Arithmetic Operators: C provides all basic arithmetic operators as listed below: Operator Meaning + Addition - Subtraction * Multiplication / Division % Modulo Division (remainder after division) Integer division truncates any fractional part. Modulo division produces the remainder of integer division. E.g. sum = a+b; product = a*b; difference = a-b; quotient = a/b; remainder = a%b; In the example, a & b are variables ad are known as operands. Note: The modulo division operator (%) can't be used on float and double datatypes. Prepared by IT & CSE Page 49 Programming with C - Lab Relational Operators: Relational Operators are symbols that are used to test the relationship between 2 variables or between variable and a constant. We often compare two quantities & depending upon this relation take certain decisions. Operator Meaning > Greater than >= Greater than or equal to < Less than b && x == 10 An expression of this kind will combine two or more relational expressions is termed as logical expression or compound relational expression. The logical expression given below is true if a>b is true and x == 10 is true. If either or both of them are false, the expression is false. TRUTH TABLE op-1 op-2 op-1 && op-2 op-1 || op-2 1 1 1 1 1 0 0 1 0 1 0 1 0 0 0 0 Prepared by IT & CSE Page 50 Programming with C - Lab Logical NOT is used to reverse the truth value of its operand. (i.e. NOT F -> T) An expression containing a logical operator is termed as a logical expression. A logical expression also yields a value of one or zero. Assignment Operator: (=) These are used to assign the result of an expression to a variable. C has a set of shorthand assignment operators of the form: = ; where v is a variable, exp is an expression and op is a C arithmetic operator. The operator op= is known as shorthand assignment operator. The above expression can be equivalent to = ( ); E.g. x += y+1; -> x = x + (y+1); Statement with simple Statement with shorthand operator assignment operator a = a+1 a += 1 a = a-1 a -= 1 a = a*(n+1) a *= (n+1) a = a/(n+1) a /= (n+1) a = a%b a %= b The use of shorthand assignment operators has 3 advantages: 1. What appears on the left-hand side need not be repeated and therefore it becomes easier to write. 2. The statement is more concise and easier to read. 3. The statement is more efficient. Increment & Decrement Operators: C has two very useful operators not generally found in other languages. These are increment and decrement operators: ++ and --. The operator ++ adds 1 to the operand, while -- subtracts 1. Pre/Post Increment/Decrement Operators PRE means do the operation first followed by any assignment operation. POST means do the operation after any assignment operation. ++m; or m++; | --m; or m--; ++m; is equivalent to m=m+1; (or m+=1;) / --m; is equivalent to m=m-1; (or m-=1;) While m++ and ++m mean the same when they form statements independently, they behave differently when they are used in expressions on the right-hand side of an assignment statement. E.g. (i) m = 5; y = ++m; This statement results y and m = 6 Prepared by IT & CSE Page 51 Programming with C - Lab Since the prefix operator first adds 1 to the operand and then the result is assigned to the variable on left. (ii) m = 5; y = m++; This statement results y = 5 and m = 6 Since the postfix operator first assigns the value to the variable on left then increments the operand. We use increment and decrement statements in for and while loops extensively. Conditional Operator: A ternary operator pair "? :" is available in C to construct conditional expressions of the form: 1? 2∶ 3; where exp1, exp2 and exp3 are expressions. There operator ?: works as follows: exp1 is evaluated first. If it is true, then exp2 is evaluated and becomes the value of the expression. If exp1 is false, exp3 is evaluated and its value becomes the value of the expression. E.g. a=10; b=15; x=(a>b) ? a : b; In this, the x will be assigned with the value of b. Bitwise Operators: In C, operations on bits at individual levels can be carried out using Bitwise operators. These are used for manipulation of data at bit level. These operators are used for testing the bits, or shifting them right or left. These may not be applied to float or double. Operator Meaning & bitwise AND | bitwise OR ^ bitwise exclusive OR > shift right ~ One's complement The bitwise AND does the logical AND of the bits in each position of a number in its binary form. 001 11100& 00001101 ---------------------------- 0 0 0 0 1 1 0 0 : Result Prepared by IT & CSE Page 52 Programming with C - Lab The bitwise OR does the logical OR of the bits in each position of a number in its binary form. 001 11100| 00001101 ---------------------------- 0 0 1 1 1 1 0 1 : Result The bitwise exclusive OR performs a logical EX-OR function or in simple term adds the two bits discarding the carry. Thus result is zero only when we have 2 zeroes or 2 ones to perform on. 001 11100^ 00001101 ---------------------------- 0 0 1 1 0 0 0 1 : Result The one's complement (~) or the bitwise complement gets us the complement of a given number. Thus we get the bits inverted, for every bit 1 the result is bit 0 and conversely for every bit 0 we have a bit 1. Bit One's Complement 0 1 1 0 ~ 0 0 1 1 1 1 0 0 --> 1 1 0 0 0 0 1 1 Two shift operators shift the bits in an integer variable by a specified number of positions. The > operator shifts bits to the right. The syntax for these binary operators is x > n. Each operator shifts the bits in x by n positions in the specified direction. For a right shift, zeros are placed in the n high-order bits of the variable; For a left shift, zeros are placed in the n low-order bits of the variable. Here are a few examples: Binary 00001100 (decimal 12) right-shifted by 2 evaluates to binary 00000011 (decimal 3). Binary 00001100 (decimal 12) left-shifted by 3 evaluates to binary 01100000 (decimal 96). Binary 00001100 (decimal 12) right-shifted by 3 evaluates to binary 00000001 (decimal 1). Binary 00110000 (decimal 48) left-shifted by 3 evaluates to binary 10000000 (decimal 128). Special Operators: C supports some operators of interest such as comma operator, sizeof operator, pointer operators (& and *) and member selection operators (. and ->). Prepared by IT & CSE Page 53 Programming with C - Lab The comma operator can be used to link the related expressions together. A comma- linked: list of expressions are evaluated left to right and the value of right-most exp is the value of combined expression. E.g. value = (x=10,y=5,x+y); First 10 is assigned to x then 5 is assigned to y & finally x + y i.e. which 15 is assigned to value. Since comma operator has lowest precedence of all operators, the parentheses are necessary. In for loops: for(n=1,m=10;n x = 9 - 12/3 + 3*2-1 2> x = 9 - 4 + 3*2-1 3> x = 9 - 4 + 6-1 4> x = 5 + 6 - 1 5> x = 11 - 1 6> x = 10 Prepared by IT & CSE Page 54 Programming with C - Lab y = a - b/(3+c)*(2-1); 1> y = 9 - 12/6 * (2-1) 2> y = 9 - 12/6 * 1 3> y = 9 - 2 * 1 4> y = 9 - 2 5> y = 7 z = a - (b/(3+c)*2)-1; 1> z = 9 - (12/(3+3) * 2) - 1 2> z = 9 - (12/6 * 2) - 1 3> z = 9 - (2 * 2) - 1 4> z = 9 - 4 - 1 5> z = 5-1 6> z = 4 Operator Precedence and Associativity Each operator in C has a precedence associated with it. This precedence is used to determine how an expression involving more than one operator is evaluated. There are distinct levels of precedence and an operator may belong to one of the levels. The operators at the highest level of precedence are evaluated first. The operators of the same precedence are evaluated either from left to right or from right to left, depending on the level. This is known as associativity property of an operator. a++ a-- left to right !a ~a (type)a ++a --a right to left! a*b a/b a%b left to right a+b a-b left to right a>>b a=b a