C programming session 08

44
Slide 1 of 44 Ver. 1.0 Programming in C In this session, you will learn to: Implement modular approach in C programs Use library functions for string manipulation Work with data storage types Objectives

Transcript of C programming session 08

Page 1: C programming session 08

Slide 1 of 44Ver. 1.0

Programming in C

In this session, you will learn to:Implement modular approach in C programsUse library functions for string manipulationWork with data storage types

Objectives

Page 2: C programming session 08

Slide 2 of 44Ver. 1.0

Programming in CImplementing Modular Approach in C Programs

Functions are the building blocks of C.Every C program must consist of at least one function, main(). The main() function is the entry point of a C program.

Page 3: C programming session 08

Slide 3 of 44Ver. 1.0

Programming in CAdvantages of Functions

Functions:Allow reusability of code and structuring of programs. Provide programmers a convenient way of designing programs.

Page 4: C programming session 08

Slide 4 of 44Ver. 1.0

Programming in CParameters of Functions

A parameter:Is the data that the function must receive when called from another function.May or may not be present in a function. Of a user-defined function is declared outside the {} of that function.

Page 5: C programming session 08

Slide 5 of 44Ver. 1.0

Programming in CPractice: 5.1

1. From the following program, identify the functions invoked from main(), and state which functions have parameters. Also state the parameters.

Microsoft Office Word 97 - 2003 Document

Page 6: C programming session 08

Slide 6 of 44Ver. 1.0

Programming in CPractice: 5.1 (Contd.)

Solution:1. The standard functions used in this program within main() are

as follows:scanf() – parameters are format of input, and pointers to the variable(s) in which the input must be storedfflush() – parameter is stdin

The user-defined functions are:output() – no parameterscalc() – one parameter, g, an int type data

Page 7: C programming session 08

Slide 7 of 44Ver. 1.0

Programming in CInvoking Functions

Functions that have parameters are invoked in one of the following ways:

Call by value: In call by value, the called function cannot refer to the variables of the caller function directly, but creates its own copy of the values in different variables.Call by reference: In call by reference, the called function should be able to refer to the variables of the caller function directly, and does not create its own copy of the values in different variables. It is possible only if the addresses of the variables are passed as parameters to a function.

Page 8: C programming session 08

Slide 8 of 44Ver. 1.0

Programming in CPassing Arrays to Functions

Arrays are inherently passed to functions through call by reference method. An array can be passed to a function in the following way:Function name (array name);

Page 9: C programming session 08

Slide 9 of 44Ver. 1.0

Programming in CPractice: 5.2

1. If the variable avar is passed to a function by a call by reference, can the value of the variable avar be modified in the called function? Give reasons for your answer.

2. State whether True or False:When an array is passed to a function, the array elements are copied into the parameter of the function.

3. Consider the program code given in the following file.

Microsoft Office Word 97 - 2003 Document

Page 10: C programming session 08

Slide 10 of 44Ver. 1.0

Programming in CPractice: 5.2 (Contd.)

Based on the code, answer the following questions:a. The function (max() / min()) is invoked by a call by value.b. The function (max() / min()) is invoked by a call by reference.c. After the function max() is executed, where does the control go to:

i. The min() function.ii. The first line of the main() function.iii. The first line of the main() following the line on which max() was invoked.

d. After execution of the function min(), program execution:i. Stops without returning to main().ii. Goes back to the main() function.

e. If the values of i and j were to be printed after the function max() and again after the function min(), what values would be displayed?

Page 11: C programming session 08

Slide 11 of 44Ver. 1.0

Programming in CPractice: 5.2 (Contd.)

4. Write a program that calls a function called power(m,n), which displays the nth power of the integer m (m and n are parameters). The function must be invoked by a call by reference.

Page 12: C programming session 08

Slide 12 of 44Ver. 1.0

Programming in CPractice: 5.2 (Contd.)

Solution:1. Yes, because the addresses of the variables are passed in by

using call by reference, the memory locations of the variables are known to the function. Using pointers to the variables, their values can be modified.

2. False. Values of variables are copied into the parameters only in the case of a call by value.

3. a. max()b. min()c. iiid. iie. After max() is executed, the values of i and j printed out would be the same as those entered during execution. After min() is executed, the value of i would still be the same, but j would increase by 5 (since b is a pointer to the variable j).

Page 13: C programming session 08

Slide 13 of 44Ver. 1.0

Programming in C

4.main() {int x, y;printf(“Enter Number: ”);scanf(“%d”, &x);fflush(stdin);printf(“Enter power raise to : “);scanf(“%d”, &y);fflush(stdin);power(&x, &y); }power(m,n)int *m, *n; /* power is pointed to by n,

value is pointed to by m */{ int i=1,val=1;

while(i++<= *n)val = val ** m;printf(“%d the power of %d is %d\n”, *n,*m, val);}

Practice: 5.2 (Contd.)

Page 14: C programming session 08

Slide 14 of 44Ver. 1.0

Programming in CReturning Values from a Function

A function can return a value to the caller function.The return statement is used to send back a value to the caller function.The return statement also transfers control back to calling function.The default return value is int type.The return statement can return only one value.The syntax for the return statement is:

return[expression]A function can also return an array. This could be done by:

return [array name]

Page 15: C programming session 08

Slide 15 of 44Ver. 1.0

Programming in CPractice: 5.3

1. Point out the error(s), if any, in the functions given in the following file:

2. The following program should calculate the square of any float value, using a function called square(). The float value is an input to the program. The program is incomplete. Put in the appropriate statements in the program given in the following file:

Microsoft Word Document

Microsoft Word Document

Page 16: C programming session 08

Slide 16 of 44Ver. 1.0

Programming in CPractice: 5.3 (Contd.)

3. The function, makeint(), was coded to convert any number entered into a char array to integer type. The function takes the string as parameter and returns the value, as given in the following file:

Microsoft Word Document

Page 17: C programming session 08

Slide 17 of 44Ver. 1.0

Programming in CPractice: 5.3 (Contd.)

Solution:

Microsoft Word Document

Page 18: C programming session 08

Slide 18 of 44Ver. 1.0

Programming in CCommand-Line Arguments

Command-line arguments:Are the parameters that the main() function can receive from the command line.Are passed as information from the OS prompt to a program.

The main() function has 2 arguments, argc and argv. The format of the main() function with parameters is as follows:

main(argc, argv)int argc;char *argv[];{:}

Here, argc is integer and argv is a character array of unlimited size (hence [ ] in the declaration).

Page 19: C programming session 08

Slide 19 of 44Ver. 1.0

Programming in CPractice: 5.4

1. Given that a C program called temp is executed by the following command: temp start 6match the following:a. value of argc 1. points to array "6"b. argv [0] 2. points to arrm/ "start"c. argv [1] 3. 3d. argv[2] 4. points to array "temp"

2. Modify the program upper so that it first checks the number of arguments entered on the command line. The program should display an error message if no arguments have been entered and also allow conversion of as many strings to upper-case as have been specified as arguments on the command line.

Page 20: C programming session 08

Slide 20 of 44Ver. 1.0

Programming in CPractice: 5.4 (Contd.)

3. Consider the following program to calculate the sum of 2 integers specified on the command line:main (argc, argv)int argc;char *argv [ ];{sum (argv [1], argv [2]); }sum (num1, num2)int numl, num2;{return numl + num2;}The program has some logical errors. Point out the errors and correct the code.

Page 21: C programming session 08

Slide 21 of 44Ver. 1.0

Programming in CPractice: 5.4 (Contd.)

Solution:

Microsoft Word Document

Page 22: C programming session 08

Slide 22 of 44Ver. 1.0

Programming in CUsing Library Functions for String Manipulation

Library functions: Are also known as built-in functions.Can be used by including the concerned header files.

Page 23: C programming session 08

Slide 23 of 44Ver. 1.0

Programming in CStandard String-Handling Functions

Some of the standard string-handling functions are: strcmp(): Compares 2 strings (its parameters) character by character (ASCII comparison).strcpy(): Copies the second string to the first string named in the strcpy() parameters.strcat(): Appends the second string passed at the end of the first string passed to it .strlen(): Returns the number of characters in the string passed to it.

Page 24: C programming session 08

Slide 24 of 44Ver. 1.0

Programming in CPractice: 5.5

1. What will the following function call return? x = strcmp(“Cada”, “CADA”); What should the declaration of x be?

2. Assume that array contains the string 846*. What will array contain when the following statement is executed? strcat(array,”>”);

3. State whether True or False:The following statement returns a value of 4 to x.x = strlen ("abc");

Page 25: C programming session 08

Slide 25 of 44Ver. 1.0

Programming in CPractice: 5.5 (Contd.)

Solution:1. Value returned - 32

Declaration - int x;2. 846*>3. False

Page 26: C programming session 08

Slide 26 of 44Ver. 1.0

Programming in CString to Numeric Conversion Functions

Conversion functions:Are available as a part of the standard library.Are used to convert one data type into another.

The following functions are used to convert a string to a numeric value:

atoi(): Returns the int type value of a string passed to it and the value 0 in the case the string does not begin with a digit.atof(): Returns the double type value of a string passed to it and the value 0 in the case the string does not begin with a digit or a decimal point.

Page 27: C programming session 08

Slide 27 of 44Ver. 1.0

Programming in CPractice: 5.6

1. What value will the variable val contain in each of the following situations?a. val = atoi ("A345"); /* val is int type */b. val = atof ("345A"); /* val is double type */

Page 28: C programming session 08

Slide 28 of 44Ver. 1.0

Programming in CPractice: 5.6 (Contd.)

Solution:1. a. 0

b. 345.000000

Page 29: C programming session 08

Slide 29 of 44Ver. 1.0

Programming in CFunctions for Formatting Data in Memory

The formatting functions are available as a part of the standard library.The following functions are used to format data in memory:

sprintf():Writes to a variable in the memory and stores the data in different variables specified.Are used for transferring data between variables in a specific format.Has the following syntax:

sprintf(string, format-specification, data, ….);

sscanf():Performs formatted input from a string.Has the following syntax:

sscanf(string, format-specification, data, ….);

Page 30: C programming session 08

Slide 30 of 44Ver. 1.0

Programming in CPractice: 5.7

1. What data is assigned to the variable string by each of the following?a. sprintf(string,"%04d%3.2f%2s",21,4.576, "Hi“);b. sprintf (string, "%10s", "ABC");c. sscanf ("0987APZ", "%4d%s", &num, string);

2. What is the error, if any, in the instructions given below against each purpose? Give the correct instruction in case of an error.

Purpose Instruction

Accept a name from keyboard printf(“%s”, name);

Format the contents of variables i_num(int) and f_num(float), and store

them into a character array called string.

printf (string,"%d%f, i_num,f_num)

Page 31: C programming session 08

Slide 31 of 44Ver. 1.0

Programming in CPractice: 5.7 (Contd.)

Solution:

Microsoft Word Document

Page 32: C programming session 08

Slide 32 of 44Ver. 1.0

Programming in CWorking with Data Storage Types

C language provides the following data storage types:auto: Variables of this type retain their value only as long as the function is in the stage of execution.static: Variables of this type retain its value even after the function to which it belongs has been executed.extern: Variables of this type are declared at the start of the program and can be accessed from any function.

Page 33: C programming session 08

Slide 33 of 44Ver. 1.0

Programming in CPractice: 5.8

1. Given the following declarations:float area; static float val; auto char number;State which variable(s) will be:a. Created each tune the function is invoked.b. Created only once.

2. A numeric array has to store 4 values - 2.5, 6,3, 7.0 and 8.0. This array is to be declared and used in a function called compute(). Which of the following is/are correct declarations of this array?a. static int values[4] = {2.5,6.3,7.0,8.0};b. auto float values[4] = {2.5,6.3,7.0,8.0 };c. float values [4]= {2.5,6.3,7.0,8.0};d. static float values [4] = {2.5,6.3,7.0,8.0};

Page 34: C programming session 08

Slide 34 of 44Ver. 1.0

Programming in CPractice: 5.8 (Contd.)

Solution:1. a. area, number

b. val2. (a) Is invalid because the array should be float or double type.

(b) Is invalid because it is declared as auto type. (c) Is invalid because it is declared as auto type.(d) Is correct.

.

Page 35: C programming session 08

Slide 35 of 44Ver. 1.0

Programming in CPractice: 5.9

1. If the variable val is declared as global in the program B, just illustrated, how would program A be modified? Give the appropriate declarations required in both programs.

2. Consider the following 2 program files:Program Afloat x;calc() {int i;: } printout(){ static char z;: }

Program Bchar numarray[5];main() {char c ;: }

Page 36: C programming session 08

Slide 36 of 44Ver. 1.0

Programming in CPractice: 5.9 (Contd.)

Based on this code, answer the following:a. The variable z can be accessed in the function(s)

____________________.b. The variable(s) that can be accessed from functions of both program

files is/are ___________.c. Slate whether True or False:

The variable i can be used in the function printout().d. Memory for variable z is reserved each time the function printout()

is invoked. State whether true or false.e. If the function printout() has to access the variable x, does x have

to be declared within the function printout()?If so, give the declaration.

f. The auto variable(s) in these programs is/are _________________.

Page 37: C programming session 08

Slide 37 of 44Ver. 1.0

Programming in CPractice: 5.9 (Contd.)

Solution:1. In program B, val would be declared as follows:

int val;calc(){:}In program A, the declaration would be as follows:main(){ extern int val;

:}

2. a. printout() only (Since it is declared within the function printout() and hence is not global) x and numarray (if proper extern statements are coded).b. False (Since it is declared within the function calc(), and hence it is not global)

Page 38: C programming session 08

Slide 38 of 44Ver. 1.0

Programming in CPractice: 5.9 (Contd.)

c. False (Since z is a static variable, it is created only once – the function printout() is invoked.)d. No (Since x is declared as global in program A, and printout() is defined in the same program file. However, declaring it as extern while within printout() is wrong.)e. The variable i defined in calc() and the variable c defined in main().

Page 39: C programming session 08

Slide 39 of 44Ver. 1.0

Programming in CPractice: 5.10

1. The following file contains a C program called remdigit.c and a list of errors in the program indicated by the compiler. Go through the error list and correct the program. Since the C compiler does not always give very meaningful error messages, go through the program given in the following file carefully.

Microsoft Office Word 97 - 2003 Document

Page 40: C programming session 08

Slide 40 of 44Ver. 1.0

Programming in CPractice: 5.10 (Contd.)

2. Write a program to display all the positions at which a character occurs in a string. Both the character to be located and the string to be searched should be passed to a function called nextpos (findchar, searchstr). Each time the function locates the diameter, it should pass back the position.After searching the entire string, the function should return the value -1.

Page 41: C programming session 08

Slide 41 of 44Ver. 1.0

Programming in CPractice: 5.10 (Contd.)

Solution:Work out your answers. A discussion on these follows in the Classroom.

Page 42: C programming session 08

Slide 42 of 44Ver. 1.0

Programming in CSummary

In this session, you learned that:Functions provide advantages of reusability and structuring of programs.A parameter of a function is the data that the function must receive when called or invoked from another function.Functions that have parameters are invoked in one of the following two ways:

Call by valueCall by reference

Call by value means that the called function creates its own copy of the values in different variables.Call by reference means that the called function should be able to refer to the variables of the caller function directly, and does not create its own copy of the values in different variables.

Page 43: C programming session 08

Slide 43 of 44Ver. 1.0

Programming in CSummary (Contd.)

Arrays are passed to functions by the call by reference method.Functions can return values by using the return statement.The main() function can have parameters, argc and argv. argc is integer type while argv is a string.The information that is passed to a program from the OS prompt is known as command-line arguments.Some of the standard string-handling functions are:

strcmp(): Compares two strings.strcpy(): Copies the second string to the first string. strcat(): Appends the second string passed at the end of the first string passed as parameters.strlen(): Returns the number of characters in the string passed as a parameter.

Page 44: C programming session 08

Slide 44 of 44Ver. 1.0

Programming in CSummary (Contd.)

atoi(): Returns the int type value of a string passed to it. aof(): Returns the double type value of a string passed to it.

The following functions are used to format data in memory:sprintf()sscanf()

C language provides the following data storage types:auto: Variables of this type retain their value only as long as the function is in the stage of execution.static: Variables of this type retain its value even after the function to which it belongs has been executed.extern: Variables of this type are declared at the start of the program and can be accessed from any function.