The C Language 1 B RAMAMURTHY UNIVERSITY AT
The C Language 1 B. RAMAMURTHY UNIVERSITY AT BUFFALO BINA@BUFFALO. EDU cse 321 -2014 10/23/2021
Introduction 2 �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. cse 321 -2014 10/23/2021
Program Structure 3 �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; } cse 321 -2014 10/23/2021
Processing the C program 4 �Save the program in a file called “hello. c” �Compile it using an appropriate compiler �CC or cc 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 generate the executable. Source code Compile loader/linker executable code Object code cse 321 -2014 10/23/2021
C program structure 5 Program Directives (#include libraries) functions statements Variables/constants Different types of statements Sequential, assignment, selection, iterative, input/output cse 321 -2014 10/23/2021
Variables and arithmetic expressions 6 #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("%dt%dn", fahr, celsius); fahr = fahr + step; } } cse 321 -2014 10/23/2021
Lets analyze the program 7 #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 1. 2. cse 321 -2014 10/23/2021
Variable types 8 � 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 cse 321 -2014 10/23/2021
Variable names 9 �A sequence of characters used for identifying an entity/item used in the program �Example: part. Num voltage port. Num my. Name ECUNum cse 321 -2014 10/23/2021
Assignment statement 10 �Assignment operator = �Syntax Variable = expresion; part. Num = 84560; double temp = 89. 5; int age = 78; pay = salary + bonus; cse 321 -2014 10/23/2021
Arithmetic operators 11 �Addition + �Subtraction – �Multiplication * �Division / �Modulus % �Precedence of operators: *, /, % +- �Left to right associavity �Override precedence using ( ) cse 321 -2014 10/23/2021
Arithmetic expression 12 �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 cse 321 -2014 10/23/2021
Iteration/repetition 13 �While loop �Syntax: Initialize condition; while (condition) { statements; update condition; } �Execution semantics cse 321 -2014 10/23/2021
If. . else: selection 14 �Often we need to make choices in the execution path. �If. . else statement if (sensed. Temp > ref. Temp) //cool the room else if (sensed. Temp < ref. Temp) // heat the room cse 321 -2014 10/23/2021
Multi-way selection 15 �Case or switch statement: switch (grade) { case ‘A’ : printf (“Very good n”); break; case ‘B’ : printf (“Goodn”); break; case ‘C’ : printf(“not badn”); break; case ‘F’: printf(“Badn”); default: printf(“Grade out of range n”); } cse 321 -2014 10/23/2021
Putting it all together 16 �Lets solve the problem below using C. �Consider the number game shown in the next few slides. cse 321 -2014 10/23/2021
The Number Game (1) 17 cse 321 -2014 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 10/23/2021
The Number Game (2) 18 cse 321 -2014 2 3 6 7 10 11 14 15 18 19 22 23 26 27 30 31 10/23/2021
The Number Game (4) 19 cse 321 -2014 4 5 6 7 12 13 14 15 20 21 22 23 28 29 30 31 10/23/2021
The Number Game (8) 20 cse 321 -2014 8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31 10/23/2021
The Number Game (16) 21 cse 321 -2014 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 10/23/2021
Analysis 22 � 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. cse 321 -2014 10/23/2021
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 2 3 6 7 10 11 14 15 18 19 22 23 26 27 30 31 4 5 6 7 8 9 10 11 16 17 18 19 12 13 14 15 20 21 22 23 24 25 26 27 28 29 30 31 cse 321 -2014 23 10/23/2021
C Language: Functions 24 CH. 4 IN KERNIGHAN AND RITCHIE C TEXTBOOK cse 321 -2014 10/23/2021
Topics 25 �Purpose of functions �Function design �Function definition �Function call cse 321 -2014 10/23/2021
Functions 26 �Functions are modular units that perform a specific operation �It provides the ability to divide the program into coherent modules �Functions can be parameterized providing a general solution that can be customized with specific parameters �Functions offers a method for spreading the code around many files, thus providing a method for organization of code (into libraries, say) �Once defined, a function can be called from anywhere accessible and any number of times resulting in reusability, standardization and uniform application of operations cse 321 -2014 10/23/2021
Function Design 27 �Lets say you want to turn Fahrenheit to Celsius converter into a function rather than dumping all the code in the main function. Value in C Value in F celf fcel Converted value in C cse 321 -2014 Converted value in F 10/23/2021
Function Definition 28 Define the prototype Type function name (parameter type, parameter type…); 2. Define the header Return type function name (param type name, param type name…) 3. Define the body of the function { local variable statements one or more return statements} Example: float fcel (float); 1. float fcel (float fah) { float celsius = (5. 0/9. 0) * (fah - 32. 0); return celsius; } cse 321 -2014 10/23/2021
Function Call 29 �It is not enough defining the function: it needs to be activated. �This is done by calling the function. �Calling a function involves specifying its name and actual parameter values. If there is a return value the call needs to be assigned to a variable. �Example float fahren = 35. 0; float celsius = fcel(fahren); cse 321 -2014 10/23/2021
Complete Example 30 �Lets write another function for Celsius to Farenheit. float celf (float celsi) { float fahr = celsi * 9. 0/5. 0 + 32. 0; return fahr; } Call: float fa = celf (35. 0); cse 321 -2014 10/23/2021
Demos 31 �Lets add an input statement to the functions and complete the example. �Scanf is the input statement. You provide the format(type) as well as the location (address) with name the input will be loaded into. �Example: scanf(“%f”, &celsi); celsi scanf(“%f”, &fahr); fahr cse 321 -2014 10/23/2021
Summary 32 �We studied basics of a function design. �We learned function definition and function call. �Standard IO using printf and scanf was also illustrated. �Parameter passing by value and reference was introduced. We will discuss this in detail later. �There is lot more C language: pointers, memory management (allocation, deallocation, etc. ) memory leaks, struct, separate compilation, makefile… ( we will discuss all these. ) cse 321 -2014 10/23/2021
- Slides: 32