 Good morning and welcome back. So as I told you, I am going to look at the queries which have been raised one by one. And instead of answering those myself, I am going to throw open the query to all the participants and would like somebody to answer the query in the true spirit of collaboration. First of all, I would like all of us to understand that we need not hesitate in giving an answer which we believe is okay but we are not absolutely certain because together only when we discuss we should be able to reach the right conclusion about any query. So as I said about the submissions, the answers need not be perfect but the answers should attempt to throw light on some other aspect of the issue or try to analyze the issue itself in more clearer terms. So with this, I will go over to the questions one by one. The first question that I have is from Sumit Kumar Agrabal. He had asked this question earlier that the smallest value was indicated as minus 2 to the power of 31 minus 1. He observed that if I use 2's complement form, then the smallest value will be minus 2 to the power of 31. I had explained that if I use the sign representation, then the first bit could be 1 or 0 depending upon the number is positive or negative and accordingly the range was given as the minimal that a compiler must guarantee. He has written again saying that even if the first bit is regarded as sign bit, it will be 0 if the number is positive. So the range of positive numbers is correctly represented as 2 to the power of 31 minus 1 as being the maximum number but even in 2's complement form the first bit will be 1 and even if that first bit 1 represents a negative number, if represented in 2's complement form, the smallest negative number will not be minus 2 to the power of 31 minus 1 but minus 2 to the power of 31. He wants to know whether that is correct because he said he wrote a small program and confirmed the largest negative value that he could get. Anybody would like to comment on this? Those of you who can comment on this may please raise a... By the way, this time I do not want any new queries to emerge. We will have time for that later. I want you to ponder upon this question and request people to volunteer to answer this. Please tell me whether you are willing to answer this query, otherwise I will come back from you and now onwards raise a button only when any participant wishes to answer a query because this is the mode that we are operating now, what I call the collaborative discussion mode where I would not be answering any query at all. I will first pass the question around and then we will come back to conclude the discussion. There is one more flag here, Nirma Amdabad. So let me go over to Nirma Amdabad. Anybody from Nirma Amdabad willing to venture to answer this query, over to you Nirma. I will go over to all centers to find out whether somebody is willing to answer the query that is being raised. These are queries which have accumulated over the last few days through participants' questions. So we will first look at those queries. Please do not ping the center for any additional query at this juncture. But I would like you to volunteer to answer the queries that I am raising. Let me repeat the query. This was about the lowest value. Since nobody else has ventured to speculate, let me answer Mr. Sumit Kumar Agrawal. Unfortunately, this printout does not say where you are from. But the correct answer is you are absolutely right. In most of the implementations, in fact, negative numbers will be represented using two's complement form. And therefore, when you ran a small program to test it, you could confirm that your guess was correct. The point that I was making is not about a specific implementation or in fact about most implementations. Which, as I said, I entirely agree with you that most implementations will implement negative numbers in two's complement form, giving you a larger value of negative value that is minus 2 to the power 31 and not minus 2 to the power 31 minus 1. The point I was making is that if you refer to C standard, the C standard prescribes the minimum values of all the limits that must be adhered to. Any particular implementation is free to exceed these limits. Exceeding is on either side. So, for example, if a maximum value is prescribed, an actual implementation may actually permit even larger value. If negative value is prescribed, somebody may implement something which goes into larger negative value. More specifically, the C standard comments on the largest negative value. It does talk about the possibility of having two representations for zero. And it additionally says that if there are two representations of zero in your implementation, you shall additionally do this, this, this, this. So, I was referring to C programming standard and the standard representation, not about any implementation. But you are very right. In most implementations, it is common sense to use two's complement form for reprinting negative numbers as you have pointed out and that is what we will see. So, I hope that answers your question. Next question is by Heethendra Suryamonshi. In lab assignment 4, there is one program pi. In that program for different values of n, the values of real-time, user-time and system-type changes. So, what exactly that means? Effectively, I read this question to say that if you run the program again and again, you may get different values. I have already explained that that could easily happen because at the time you run your program depends upon what other operating system processes were running in the background will determine the exact clock time. Second, the time command does not guarantee accuracy of measurement and therefore we should not consider the exactness of value but rather the order of magnitude of that value. The next question is from Ph.G. Tech Coimbatore M. Subatra and Manjula Devi. Can you please clarify the space complexity of algorithm? Like time command, whether we have command to find space complexity of algorithm. Also, we need explanation for the word context we referred in Vicky but we can't get its exact meaning. So, this is question in multiple forms. First, I would like to ask our colleague participants whether anybody is willing to comment on the space complexity of algorithms. So, space complexity of algorithm. Anybody from the remote centers? I would like you to ping me now if anybody, any participant is willing to comment on the space complexity of algorithms because we have discussed only time complexity. Anybody from ISRO remote center? Nobody. That is not very fair by the way. As I told you, don't worry if the information that you give is not accurate or not correct. We will all discuss it and we will all come back with correct answer together. Please understand that even for 40 years of experience there are so many things which I don't know. It's perfectly all right to either not know or to make mistakes. But it is important that we discuss this out and deliberate so that doubts are clarified to the extent that is possible. That incidentally is the environment in which our students also should work. Here I will repeat the question. The question is we have discussed time complexity. But what is space complexity and is there any utility like time to calculate space complexity? Rajarambapu College has an answer. I can see them here. Over to you. Sir, space complexity is related to storage requirement of particular algorithm. Suppose input value, if you are dealing with array then that n is nothing but storage requirement. I think it is related to storage requirement of particular algorithm. That is space complexity. Over to you. Okay. So the first answer we have got says that the space complexity is related to storage requirements just as time complexity is related to execution time. Let us go over to KG Somaya has an answer and NIT Jalandhar has an answer. First I will go over to KG Somaya. KG Somaya, over to you. Good morning, sir. This is Archana Shirke from KG Somaya. Any algorithm we can calculate in terms of time complexity and space complexity. Space complexity is nothing but the memory requirement for that particular algorithm. How much memory we are going to allocate when we are running that particular program. For example, like a sort. If you are taking any type of sort like merge sort and all, we can do the merge sort with the help of some temporary variables and all. If you are allocating the same array for doing the temporary calculations and all, so then in that case the time complexity of that particular algorithm will be depending on what is the memory you are going to utilize. So if I am going to utilize one or two variables then it can be a O of 1, that is the constant and if I am going to allocate the same array, what will be the input to that particular algorithm. In that case the complexity will be O of n. It is very similar to the time complexity. It based on what is the extra memory you are going to allocate for that particular program. Over to you, sir. Thank you very much. It was a very elaborate answer but I would like to make one point. After all we are still discussing basic programming here and the notion of time complexity and space complexity is merely to introduce to our students that there are associated costs both in terms of storage and execution time. So while your answer is perfect, there is an attendant question that just like we have a time command to measure the execution time, do we have a command to measure the storage requirement? Because first year students will generally find it difficult to distinguish between algorithm and the program. Program is the current implementation whose actual time is being measured. Algorithm is the back end abstraction whose complexity has entered to infinity is to be counted. Similarly, what is the notion of storage complexity is probably the question. But it was a good answer. Thank you so much. Amrutapuri, I can see Amrutapuri apparently somebody there has an answer. Over to you, Amrutapuri. I think space complexity is an extra space that is required for the program to run. Not the space taken by the data or the instruction. It is an extra memory that is required when the program is running like a temporary variable or array that you allocate. Over to you. Thank you. I do not entirely agree with you. The space complexity incidentally is related to the space requirement of the program. But you said it is not the instructions or the data but something else. That is not correct. The space complexity is definitely related to the total memory used by the program which will include the instructions, which will also include the data. But mostly it is the data memory that is consumed which is supposed to indicate the space complexity. In general, by the way, there is a tacit relationship between the two because when you try to enhance the time complexity of an algorithm usually the price that you have to pay is to provide for additional arrays, additional storage, etcetera, etcetera. So, invariably when you come up with an algorithm which improves the time complexity sometimes the space complexity deteriorates. That is, it requires more space. We will close this discussion on this question here because the detailed discussion of this question is outside the scope of the basic computer programming. But I am glad that so many people had comments to make. Let me go over to the next question. The next question is by Tanussi Chakravarti. For the programming project, can we use any other programming language other than C language? The answer is no. This workshop is about C programming and therefore please understand that whatever you do ultimately will get contributed to the national subject portal. And since this subject currently is about C programming we cannot unfortunately put anything on the portal which is not directly related to C programming language. Of course, eventually this programming portal may enhance itself to include programming in other programming languages but only at that time you can submit any additional contributions which you wish to make. The next question is by Nitesh Saxena from IMS Engineering College, Ghaziabad who is attending at triple IT, Allahabad. This query is related to C programming but not with first year students actually I am also teaching computer graphics. In the lab of computer graphic students they have to write different C programs related to computer graphics. My query is how to make the students understand about the graphics card programming and mouse programming because these programming topics are very complex and in very less time how can students understand these concepts? What strategy I have to follow for the solution of this problem? So let me restate the problem that he is saying that just like we have written C programs to solve real life problems by simulating those problems or translating those problems into programming context he is asking a question if he has to basically what he is referring to is embedded software or the embedded software which exists within the processors of graphic card and mouse how to exploit that and how to use that by external C program that you and I write more specifically suppose I want to draw a picture through what I call raster graphics that means I want to plot points on the screen given X and Y coordinates a graphics card is capable of doing that the graphic library that I use may also be able to do that but if there are some additional features in the graphic card how to exploit it using C? Anybody would like to answer this question? I will wait for any ping from users I will try to go over to Nirmandabad yes I think they are now visible and let me see if I can hear them over to you yes go over I can hear you As far as the graphics utility is concerned they generally include Graphics.h file and we initialize the CRT in Graphics mode by a standard function called as init graph before that we need to invoke a function called as detail graph and if we go into the Graphics.h I mean we can read that file and we can see different modes like CGA, VGA and all those things so detailed information can be obtained from that Graphics.h which is legible or which is readable over to you sir Thank you very much this actually does answer some part of the question which was raised the question was I believe slightly deeper having identified that the card is VGA or SVG or whatever how do you exploit that further I think the answer is correct that one should study in details the Graphics.h or whatever header file is there which describes the features of the underlying hardware and which are exploitable by writing our programs one thing however is that Graphics.h is not a standard feature of C programming language it is available on compilers such as TurboC however there are other graphic packages which may or may not be able to exploit all the features of the underlying graphic cards but in any case they consolidate the graphic facility and give us since the question related to going beyond C programming language we will stop the discussion here but I am very happy with the answer that was given I hope that answer gives some indication to the original query that was raised let me go over to the next question now Sachin Bara how near pointer is different than the far pointer any particular situation is there when we have to use the far pointer the context is that we have discussed pointers in the class he is pointing out that there is something called far pointer and near pointer and what is the difference between them and under what situation we should use which pointer so this is the question I throw it open to all participants now I will repeat the question what is a far pointer and near pointer what is the difference between these two and under which situation we have to use far pointer so I will wait for a minute for somebody to volunteer so far no ping from any AV remote center anybody from the ISRO remote centers no answer it is very funny because when I came here after the tea break even I did not know the answer I had asked this question to about five or six people since yesterday and I could not get the answer so today I just wanted to admit that I don't know the answer and we will try and together find out somebody at SVNIT Surat has an answer to this but I just wanted to tell you that I also found the answer recently not directly but my colleague Professor Abhiram Ranade gave me the answer there is also an answer from Amruta Bangalore let me first go over to Amruta Bangalore ASC Bangalore is live over to you ASC Bangalore yes sir you for a very small program so we can go for a near pointer suppose if you are going out of 64 kb then you have to go for the far pointer okay that's an answer thank you there is a answer from NIT Jalandhar as well where the answer says sir near pointer actually stores a particular value at the subsequent offset memory address in the memory whereas the far pointer stores it at a new base address with zero offset let me see if there is any other SVNIT Surat has pinged and JEC Cookus has pinged let me select SVNIT Surat first and see if we can listen to their answer unfortunately I am still receiving blank video from SVNIT Surat so let me go over to Jaipur engineering college Cookus and see what is the answer they have in mind I can see Jaipur engineering college over to you hello sir actually sir when we want to locate the address which is out of our program segment then in that case we use far pointer otherwise we will locate the address which is in our program segment that in that case we use near pointer over to you I hope you were all able to hear this answer his answer was that if our pointer is pointing to a location within our segment then we use near pointer but if we have to access memory location which is outside our segment then we have to use far pointer okay so let me act as a student and ask you the following question what is the notion of segment in C programming language how do I know whether I am accessing memory in so called within my segment or outside segment as far as I understand my program allocates memory all of which is accessible to me so what is this notion of segment is an additional question I will ask so let me tell you the answer that I got from professor Abhiram Ranade and he got it from Wikipedia curiously if all of you had seen Wikipedia you would have got the hint so this is information from Wikipedia in a segmented architecture computer a far pointer is a pointer which includes a segment selector making it possible to point to addresses outside the current segment okay so let me comment on this this notion of far pointer and consequently of near pointer is related to the architecture of the computer more specifically if a computer has segmented architecture such as Intel 8086 we are talking of really really very old computers when we are talking about those computers where the ordinary pointer is just a 16 bit offset with an implied segment a far pointer has two parts a 16 bit segment value and a 16 bit offset value which together becomes 32 bits and therefore a linear address is obtained by shifting that binary segment four times to left and so on some details are given in the Wikipedia answer okay now these this notion of far pointer and near pointer would have been valid in the days when we were using segmented architecture such as 8086 first of all to a computer programmer using a C programming language when he sticks to the standard C the notion of far and near should not bother him or her my answer is therefore that these are slightly dated notions and in modern programming you may not require them the wiki itself says that on C compilers targeting the 8086 processor family far pointers were declared using a non-standard far qualifier now you have a normalizing far pointers could be avoided with the non-standard huge qualifier all of these are non-standard as far as our programming is concerned when we declare a pointer we legitimately imagine that our pointer will be able to address all memory using the pointer value that is given there which is the correct situation in short then far pointer and near pointers could be meaningful if you are writing programs specifically for embedded systems which use processors of the segmented architecture like 8086 but for all normal programming done on regular computers there is no notion of far or near pointer which is necessary to be used in our programs here is the next question by Prema Kala how to solve the segmentation fault error while I write simple C programs for implementing pass 1, pass 2 of an assembler or for designing a simple loader sometimes my program is executing properly both in Linux and Windows but most of the time it gives the error A segmentation fault in Linux and B debugging memory does not leave enough memory space and desk on Windows is there any function in C to collect the garbage data like garbage collector function in OS to overcome this problem I think garbage collection is a distinctly different problem segmentation fault is a distinctly different problem but is there anybody who would like to comment on why a segmentation fault should occur there is no response from ISRO remote centers there is no response from AVU remote centers also let me add my own bit to the confusion my own experience and the experience of many of my friends here is that 99% of the time a segmentation fault would occur when a pointer within your program misbehaves for example you have allocated memory to dynamically but the ML lock call returned a null value and you simply assume that the memory has been allocated and started going ahead with it or in some pointer computations that you are doing in your program the pointer becomes null alternately if a pointer is assigned a value which is way beyond the boundary of the actual memory which you are legitimately using consider a simple case I have an array declared with 10 elements I assign the pointer the address of the first element however by doing pointer arithmetic I can easily make that pointer point to 25th element for example whereas there is no 25th element now depending upon where that 25th element location is either the program might simply stop by giving an error or if it extends it is 25 it is 25000 then it might try to access a memory which is beyond the memory segment it is allocated to you by the operating system obviously there will be a segmentation fault so while we have no answer volunteered from any other center my own take and I am not 100% sure of the answer either but whatever I have observed that whenever we have been able to trace the problem with a program which gives memory dump invariably the problem relates to a pointer going ahead is why you will not find these errors in normal program which solve real life problems because there we either don't use pointers or we are careful with pointers but the problems will arise when we are trying to write system software such as compilers themselves or loaders or linkers you will find for example that when you are trying to test your linker or test your compiler you will get this kind of fault because that is where maximum possibility of a pointer going ahead because of wrong calculations exist the next question is by Rajesh Andhra Loella Institute of engineering and technology is the allocation of memory for the block which is allocated dynamically is possible or not the reason behind the question is that in a C program if I dynamically allocate memory for 10 integer elements which is 10 into 4, 40 bytes I use a pointer to do that by saying integer star m lock size of into 10 so basically saying 40 bytes have been allocated now he reads data into these 10 elements after sometime if he frees the pointer if he says free PTR according to him free PTR should be deallocating the block which was dynamically allocated unfortunately what he says that after using the free function if for some reason he looks at that data again that is for all the 10 elements he says print f star PTR plus i he actually gets the same values again so his contention is after having deallocated how can my program still print the values so that means the memory appears to remain allocated so is there anybody to answer this question this answer relates to allocation and deallocation while in this workshop we have not explicitly discussed this but most of the colleague participants would be familiar with the notion of dynamic allocation of memory and indeed that would be one topic which eventually some of us will have to come together and contribute examples and explanations and slides so that all of that will go on to the portal ok SVNIT Surat has an answer I am going over to SVNIT Surat mayhul from SVNIT Surat normally when we deallocate the memory we inform now we release that memory but until we again take that memory and do not write any values there then the last one will be there so we directly use the pointer and try to add memory so it is currently whatever last value put there so you just reallocate the memory rewrite the value and then try to fetch the value you do not get the last value over to you sir very good answer indeed I will just add one bit of my own to that answer but this is indeed the correct answer so I hope Mr Rajesh understands what is happening he has allocated memory rates of values there now he has freed the pointer and he observes that if he still reads the memory contents he still finds the same value the answer from SVNIT Surat was that that happens because although I have deallocated the memory that memory has not been transferred to somebody else yet and therefore before that memory is actually being reused by somebody else the values will remain in that memory so if I access that memory again I will continue to look at the same values however his suggestion is that after deallocating please try to allocate some memory to some other variable and assign some values to that variable new values now if you try to go back to that pointer you will find that new values come in the answer is correct that the old values remain but the way to check it is not very fair because when I ask for additional memory I will get a pointer this pointer will not necessarily be the same pointer please note that when I dynamically allocate memory the memory is given to me by operating system there is no guarantee that operating system will give me the same memory for some other usage there is also a possibility that this memory will be used in a memory pool by the operating system to be given to some other process which is demand dynamic memory so in general there is no way to verify that my memory which I deallocated is being used by someone else or not we have to depend on the fact that operating system is wise and clever enough that whenever I deallocate it will sort of keep a track of how many bytes have become free and use it in its own pool to allocate to somebody else but the other part of the answer is absolutely correct that even if I deallocate unless somebody does something with that memory for reallocation old values will remain in that memory and if I continue to access them I will keep looking at the same values thank you very much for that wonderful answer Anna University also would like to comment over to you Anna University Thagumani sir we have an answer normally memory won't allocator it will be there when we use the free pointer we are just dealing the pointers connection to that memory so anyhow the value will be the same that is the reason why modern languages they are having automatic garbage collection which can free that values in C I feel that the problem is there because of it doesn't have any automatic garbage collection what is that? thank you very much for extending the answer further what he is pointing out is that when I free a memory effectively for the operating system it becomes a garbage meaning what is garbage actually it has my values but as far as operating system is concerned those are garbage values such releases might happen from multiple programs so consequently operating system will keep having these pieces of memory garbage collection refers to an algorithm which will routinely look at all such freed memory from various programs and collect them into a single pool such a utility is called garbage collector in fact in Java for example when there is no notion of a pointer but effectively whenever a dynamically allocated memory gets free Java has a garbage collector which routinely runs even in large production systems you can set an algorithm to run it say every 10 minutes or 15 minutes which will keep collecting the garbage because for any new allocation the memory has to be made available so we will conclude that these combined answers apparently respond to this question that in C programming language there is no guarantee that after I free allocated memory that garbage has been collected by someone and therefore the old values stay as our friend from Surat pointed out AC Bangalore wants to add something let's go over to AC Bangalore he is referring to an earlier question so we will consider the dynamic allocation and freeing of the memory problem close he is revisiting the earlier question on the segmentation fault and pointing out that it is not just pointer values going hewa but in other cases also he has noticed a segmentation fault let me give a final answer to this a segmentation fault effectively means that the program which is executing is attempting to access memory which is not within this segment allocated to that program and here I am not talking about hardware segment or segmented architecture I am in general talking about a memory segment that has been given to our program as to under what circumstances such a situation may arise that an instruction in the program is trying to access memory outside the segment there could be a variety of reasons I had indicated that pointer value going hewa is a reason which appears most frequently but you are very right that is not the only reason there could be several other reasons unfortunately there is no guaranteed way to find out why exactly the segmentation fault has occurred the only way you can actually is to get the memory dump at the time the segmentation fault has occurred study the memory dump which is essentially a whole lot of binary code and then try to figure it out usually that is not a very productive approach and people try to relook at the program itself to try to find out what changes they could make so that the segmentation fault can be avoided we will go over to the next question this is by Vidya Jhope Vijay T.I. Mumbai how to pass command line arguments in turbo C environment like in Java she says Java file name argument list so we know control F9 and alt F9 options I am not familiar with turbo C these options must be relating to our ability to give some command line arguments I do not know but how to execute this in windows environment so the question is how command line arguments are passed in turbo C environment anybody would like to answer this SVNIT Surat has an answer let us go over to SVNIT Surat wait for one second yes I can see SVNIT Surat over to you Nehul from SVNIT Surat if you like to pass the command line argument in the TC then go on the command prompt then go to the directory C drive TC bean and then type your program exe file name suppose my file name is the taste.c then you just compile it so it is the list the taste.exe file so on the command line argument you type the taste your program name executable file name then space and give the argument whatever you like suppose taste.exe hello space world space and space 20 like that over to you sir and it is also available on the many books so refer that books over to you sir thank you very much Nehul you seem to have uncanny expertise in C programming language I look forward to having your continuous cooperation in our endeavor to build a very useful portal thank you very much for the answer it makes eminent sense I hope the people those who use turbo see would have understood this basically in order to pass command line parameters I have to give a command and I have to give a command on command line and that is the answer that he has given I would ordinarily expect that any terminal interface from which I execute a program should permit me to write that command name followed by parameters I have not discussed arc C arc V in detail but those are the standard ways in which C programming language defines how your program can get to see the parameters which have been given at the time of command line typing VNIT in Nagpur also would like to have an answer VNIT in Nagpur over to you sir Rohit Vajah here wanted to answer but I think professor Mehul from SVNIT has answered and he also had the same answer exactly so we don't have any extra thing to add right now thank you over to you thank you very much so we have complete unanimity on this answer at least SC Amruta Puri also wants to answer I hope they add some more dimension to it let me see if I can go over to Amruta Puri yes I can see Amruta Puri what answer would you like to add over to you to an a command line program on WC if for example you put example.C after compiling it with example.obj file so for compiling, for running that obj file with command line argument we have in file option we have to take up the dot shell and in that dot shell you have to type that program and the command line argument program which is the obj file name and the command line argument over to you thank you very much for your answer but I am slightly confused because although I am not familiar with turbosy environment my belief is that it is not the obj files that you execute but you need an executable or a dot exe file at least that is what it appears Professor Mehul was trying to say so please cross check whether it is an obj file or dot exe file I believe it is a dot exe file and that you have to type the command at a command prompt in the terminal that is of course commences thank you very much we now have some questions on C programming why do the main program return a value I think we have seen this question why do a main program return a value is because in C main program is also written as a function and every function can return a value if that is how it has been defined however if we describe any function as void then it is not required to return a value so consequently in the main instead of saying int main if you say void main it will not return any value but if you say int main it will be returning a value okay triple i t alabad yes we can see you triple i t alabad over to you so I would like to answer the previous question that is argument count and argument valued in turbo c we have two options argument count and argument valued and followed by that we have to use it on the command line that we have to mention the program name and followed by the arguments that we have to mention in that program and then simultaneously it will be run as it is over to you sir well I appreciate that but you will agree that it is roughly the same answer that everybody has given personally I believe Professor Mehul's explanation was very candid and complete we will take as the final answer that we have called out of the collective discussion and we will go over to other questions so here is a question by Jitendra Rathi, Jaipur Indian College Cookers what is the default data type in C language would anybody care to answer this question SPNIT Surat has an answer so let us go over to SPNIT Surat over to you okay sir Mehul from SPNIT Surat if default data type for the fiction data type written data type then it is an integer if it is for any variable declare inside the program then it is a compilation error it is not allowed over to you sir thank you very much Professor Mehul yes in fact to the best of my knowledge there is nothing like a default data type you nicely distinguish between a return value but that is a single value it is not a data type is usually associated with the variable that we use in our program the correct answer is that every variable or array or whatever must be explicitly declared otherwise you will get a compilation error and this is not the right way to write the program let us go over to the next question what happens when we use the bitwise operators with floating point numbers I had mentioned to you that bitwise operators will work on any sequence of bits but the results will be unpredictable because there is no sense in using bitwise operators however if you know the internal representation of mantisa and exponent explicitly then you can refer to the collection of 4 byte location and you can still do some meaningful operations by doing bitwise shifts etc separately on mantisa and exponent but ordinarily in terms of computations or in terms of writing any meaningful code working on bitwise operators working with bitwise operators on floating point numbers does not make imminent sense V. Narendra Kumar Vangala from NIT Varangal is the use of and in scanf statement essential it is quite confusing to the beginners of C programming language you have used in some function in lab to assignment where you avoided the hand symbol but that too is quite confusing can't we come out with a new syntax in C where we can avoid the use of and in scanf I think we have discussed this question some time in fact the quiz that I conducted essentially revolved around the difficulty for youngsters to understand scanf and printf but the answer to define a new syntax in C I am afraid is not a feasible answer language standards unfortunately are not defined based on the difficulty that we teachers have in teaching those syntax so we will leave it at that the next question from Hetal Kannubhai Gavariya Nirma University what are the class and library functions used in using namespace STD we will pass this question because this is not related to C programming we use this as I explained merely to permit us to use C in and C out and that we use as a temporary replacement of scanf and printf till we discuss those functions so this should be a question legitimately related in the context of either the either a subject on C++ or in object-oriented programming suffice it to say that namespace STD is a concept from C++ there is another question which fox me completely Jai Raj Pottekat too from NIT Calicut we all know we are generally following Von Neumann's architecture suppose I am using a harworld-based machine how would this Dumbo react so he is saying that the Dumbo's memory model and other thing are based on Von Neumann architecture is there anybody who would like to answer this question as far as Dumbo is concerned since Dumbo is my creation I will answer to you Dumbo represents the model that the programming language follows Dumbo has nothing to do with the internal architecture hardware architecture of the underlying machine as long as on that machine my programming language has been properly implemented as per standard specification and a compiler is available I do not care what the underlying architecture is so my Dumbo will truthfully represent the model of the programming as understood by the programming language that is my answer from the Dumbo side of course I am not very familiar with the harworld-based machines I am not an architecture person so maybe I will request people if they can explain what is a harworld-based machine perhaps we could go over to NIT Calicut and request Professor Jai Raj Pottekat too himself to shed some light on this let me see if NIT Calicut I can see somewhere NIT Calicut so I am selecting NIT Calicut now let me see if your video is visible yes the video is visible NIT Calicut is Professor Jai Raj there so the request is I have already answered the question as far as Dumbo is concerned namely he models the programming language and not the underlying hardware architecture but I am curious as I am sure that many of our colleague participants would be that one on architecture all of us are familiar with but when you mention harworld-based machine what exactly do you have in mind over to you Professor at NIT Calicut there is no response from NIT Calicut so maybe Professor Jai Raj is not here we will go over to the next question and come back to this maybe at a later time Rishi Raj Vyas, Jaipur Engineering College, Kokas what is the process for adding the user-defined function to the library functions so that we can use it frequently in our whole project I will repeat the question this is in the context of standard libraries where we say include and we can use all the functions which are contained in the standard library his question is that what is the process of adding the user-defined function to a library function so that we can use it frequently in the whole project without having to redefine it again anybody would like to answer that can we go over to SVNIT Surat generally from SVNIT Surat actually whatever the function you want to define user-defined function you write in some file and send it in the header file and then in your main program you write that header file and then you can use that function but while including that header file do not use the conventional symbol we are using in an input statement like greater than and less than but instead of that you use the string double quotation in that is specified by that header file for example you prepare a header file like test.h and in that test.h you write your all user-defined functions and h for you in your main program in your main file what is that? thank you very much I hope this answers the question actually there is a further explanation of the correct answer that we saw and it relates to the search path so when you put double quote there is a specific place where the linker will search for that particular function which is greater than less than it will search somewhere else there are multiple ways of defining the path where your programs are written but essentially that is the correct answer there are also additional things such as separately compiled functions I am very thankful that a very appropriate answer has emerged from Surat and this time from some other professor and not only from Sona college over to you Sona college this is the answer regarding the previous question the architecture dependence actually the compiler will take whatever the architecture nowadays we have a GPC compiler it will support nearly 47 architecture whatever architecture we use we compile the C program it will produce the base depends on that architecture over to you sir thank you very much the answer given was the previous question so it was not related only to the hardware architecture or something and the answer actually collaborates the point that I made he mentioned that GCC compiler is capable of taking care of about 47 different architectures that means it will translate our C program into an appropriate executable program with instructions for any one of those 47 architectures so really the answer to that question was what I said that Dumbo was merely a model but forget the Dumbo even if we don't talk about Dumbo while introducing programming all that we are re-emphasizing is that as far as we are concerned our notion of programming is as seen from the eyes of the programming language so we presume that the capabilities of the programming language as defined in its instructions etc control structures variable definitions etc all of them will be implemented faultlessly irrespective of the underlying machine to which the program gets translated thank you very much for further clarifying this vnit in Nagpur has some additional comments to make over to you vnit sir I will just like to extend the answer given by svnit surat regarding the addition of our functions into libraries so professor over there has correctly answered that question but I will just like to add couple of points first point is like even if I have a set of file in which different functions are written I can bundle them together into a single library and then use it as if it is more like the standard provided library just like as you said pass as provided I want to just make over here for the list of participants is even while compiling that library which we can compile it using either as statically linked library or dynamically linked library and the advantage of dynamically linked library would be that the development of library itself can go on parallelly as the development of the main program is going on provided all the prototypes are in place and they are in order so this is the only extra thing that I wanted to add obviously this statically linked and dynamically linked they come with their own advantages and disadvantages but I think this is one extra point that our students which will be helpful for them in the world of computer programming in industry so that's all from my side over to you sir thank you thank you very much for providing the additional explanation for the participants who are not familiar with this static linking and dynamic linking I would just like to add one more comment all of you would have heard of DLS you know these DLS you find in windows environment the corresponding thing in Unix is SO or shared objects so if you see files with dot SO they are shared objects and they are dynamically linked library objects in the sense that when you compile a program and link all of them you actually dynamically link things let me also elaborate on the difference if I want to run my final program then that program will require a runtime environment at the back where the runtime support for these dynamically linked libraries will be available this is alright if that environment is available to me but if I want to compile a program link it then take the executable files somewhere else and execute it it will not run if I have used dynamically linked libraries so I think this is exactly what VNIT had in mind when they mentioned that there are advantages and disadvantages but thank you very much together I think we have got a lot of elaboration on this particular query ok I think I am at the end of the queries that I have over and out thank you