B. Ramamurthy University at Buffalo bina@buffalo.edu The C Language B. Ramamurthy University at Buffalo bina@buffalo.edu Amrita-UB-MSES-CSE524-2013-3 5/10/2013
Introduction About C language: “.. features economy of expression..”; written for Unix Operating system (1978) The C Language since then has taken a life of it own and has become the foundation for many modern languages. It has also become a language of choice for RTOS. Reference: The C Programming Language by Kernighan & Ritchie (available online) We will learn C by repeated spiral mode hands-on exposure to various elements of the language We will also try to work on the Linux system and another system called Nexos (Next generation embedded operating system) at the CSE department at UB. Amrita-UB-MSES-CSE524-2013-3 5/10/2013
Program Structure A C program is a collection of functions with at least one function called “main” Here is the classical example that has become a metaphor for a first program in any language. Hello World: lets compile it and see what happens. #include <stdio.h> int main () { printf(“Hello World \n”); return 0; } Amrita-UB-MSES-CSE524-2013-3 5/10/2013
Processing the C program Save the program in a file called “hello.c” Compile it using an appropriate compiler CC or cc or gcc or g++ (where G/g stands for “gnu” organization) Compiler parses the input, checks for syntax correctness and if syntax is correct generates code; This code is further linked and loaded to genenerate the executable. Source code Compile loader/linker executable code Object code Amrita-UB-MSES-CSE524-2013-3 5/10/2013
C program structure Program Directives (#include libraries) functions statements Variables/constants Different types of statements Sequential, assignment, selection, iterative, input/output Amrita-UB-MSES-CSE524-2013-3 5/10/2013
Variables and arithmetic expressions #include <stdio.h> /* print Fahrenheit-Celsius table for fahr = 0, 20, ..., 300 */ main() { int fahr, celsius; int lower, upper, step; lower = 0; /* lower limit of temperature scale */ upper = 300; /* upper limit */ step = 20; /* step size */ fahr = lower; while (fahr <= upper) { celsius = 5 * (fahr-32) / 9; printf("%d\t%d\n", fahr, celsius); fahr = fahr + step; } Amrita-UB-MSES-CSE524-2013-3 5/10/2013
Lets analyze the program #include directive Comment // single line comment /* multiple line comment */ 3. Main function 4. Variable declarations {variable type, variable name} int step; 5. Initialization: step= 20; 6. Statements: computations; arithmetic operations {+, -, *, /, %} 7. Repeat computation using a “while loop” 8. Condition for repetition 9. Output results using “printf” 10. Semicolon (;) as a terminator for statements Amrita-UB-MSES-CSE524-2013-3 5/10/2013
Variable types int: integer; for representing whole numbers float : floating point or real numbers; for representing fractional numbers, vary large and very small numbers (32 bits) double: double precision real number; double the size of float (64 bits) char: single ASCII (American Standard Code of Information Interchange) character long: longer integer Amrita-UB-MSES-CSE524-2013-3 5/10/2013
Variable names A sequence of characters used for identifying an entity/item used in the program Example: partNum voltage portNum myName ECUNum Amrita-UB-MSES-CSE524-2013-3 5/10/2013
Assignment statement Assignment operator = Syntax Variable = expresion; partNum = 84560; double temp = 89.5; int age = 78; pay = salary + bonus; Amrita-UB-MSES-CSE524-2013-3 5/10/2013
Arithmetic operators Addition + Subtraction – Multiplication * Division / Modulus % Precedence of operators: *, /, % + - Left to right associavity Override precedence using ( ) Amrita-UB-MSES-CSE524-2013-3 5/10/2013
Arithmetic expression celsius = 5 * (fahr-32) / 9; 3 + 5 – 10 * 2 / 3 % 4 =3 + 5 -20 /3 % 4 = 3 + 5 – 6% 4 = 3+5 – 2 = 8 – 2 = 6 Amrita-UB-MSES-CSE524-2013-3 5/10/2013
Iteration/repetition While loop Syntax: Initialize condition; while (condition) { statements; update condition; } Execution semantics Amrita-UB-MSES-CSE524-2013-3 5/10/2013
If..else: selection Often we need to make choices in the execution path. If ..else statement if (sensedTemp > refTemp) //cool the room else if (sensedTemp < refTemp) // heat the room Amrita-UB-MSES-CSE524-2013-3 5/10/2013
Multi-way selection Case or switch statement: switch (grade) { case ‘A’ : printf (“Very good \n”); break; case ‘B’ : printf (“Good\n”); break; case ‘C’ : printf(“not bad\n”); break; case ‘F’: printf(“Bad\n”); default: printf(“Grade out of range \n”); } Amrita-UB-MSES-CSE524-2013-3 5/10/2013
Putting it all together Lets solve the problem below using C. Consider the number game shown in the next few slides. Amrita-UB-MSES-CSE524-2013-3 5/10/2013
The Number Game (1) 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 1/17/2019
The Number Game (2) 2 3 6 7 10 11 14 15 18 19 22 23 26 27 30 31 1/17/2019
The Number Game (4) 4 5 6 7 12 13 14 15 20 21 22 23 28 29 30 31 1/17/2019
The Number Game (8) 8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31 1/17/2019
The Number Game (16) 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 1/17/2019
Analysis What is theory /concept behind this game? How did I arrive at the number you guessed? How can I automate this process? What is the data and what is the algorithm? How can we convey these to a computing machine? While a computer talks binary, we humans write programs in languages such as Java, C#, C++, Basic etc. Binary numbers (1’s and 0’s) is the number system used by the computer systems. We humans use decimal number system that has 10 distinct symbols (0,1,2,3,4,5,6,7,8,9) Your task: Write a C program to computerize this game. 1/17/2019
2 3 6 7 10 11 14 15 18 19 22 23 26 27 30 31 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 4 5 6 7 12 13 14 15 20 21 22 23 28 29 30 31 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31 1/17/2019