lec08-cs110 computational engineering

Download Lec08-CS110 Computational Engineering

Post on 22-May-2015

41 views

Category:

Education

1 download

Embed Size (px)

DESCRIPTION

A keynote on Problem Solving using Computers

TRANSCRIPT

  • 1. CS110: Data Types in C Lecture 8 V. Kamakoti 20th January 2008

2. Datatypes Types of Data you can use in C without explicit definition by the user Arithmetic Integer domain Real domain Strings Length one - character Length greater than one - array of characters Sequence of characters 3. Todays Lecture Contents Built-in Types in C You can define your own data types Construct called typedef Later in this course User defined data type Creative Problem 4. Built-in Data types int char float double Sizes of each vary depending on Architecture and compiler 5. Variations int signed, unsigned, long, short float single and double precision Size of short int less than or equal to just int which is less than or equal to long int The builtin function sizeof() shall return the size of the types. 6. Example Program #include /* Program to print sizeof all datatypes */ main() { printf("sizeof int is %dn",sizeof(int)); printf("sizeof short int is %dn",sizeof(short int)); printf("sizeof long int is %dn",sizeof(long int)); printf("sizeof unsigned is %dn",sizeof(unsigned)); printf("sizeof short unsigned is %dn",sizeof(short unsigned)); printf("sizeof long unsigned is %dn",sizeof(long unsigned)); printf("sizeof float is %dn",sizeof(float)); printf("sizeof double is %dn",sizeof(double)); } 7. Output Apple I Mac system - Intel Core 2 Duo Architecture Compiler gcc-4.0.1 version sizeof int is 4 sizeof short int is 2 sizeof long int is 4 sizeof unsigned is 4 sizeof short unsigned is 2 sizeof long unsigned is 4 sizeof float is 4 sizeof double is 8 8. What does this mean? int i; // Allocated to memory 0x1000 It has 4 bytes B3,B2,B1,B0 B3 is most significant byte 0x1003 B0 is least significant byte stored in 0x1000 B1 is stored in 0x1001 B2 is stored in 0x1002 This is called little-endian storage - Intel machines use this 9. What does this mean? int i; // Allocated to memory 0x1000 It has 4 bytes B3,B2,B1,B0 B3 is most significant byte 0x1000 B0 is least significant byte stored in 0x1003 B1 is stored in 0x1002 B2 is stored in 0x1001 This is called big-endian storage - SUN processors - Sparc use this 10. Constants in C Remember the #define PI in the Area of the circle problem? That was a real constant 0, 1, 245, 623, 987 - are decimals 0, 01, 0245, 0623 - are octals Begin with a 0 So 125 is not equal to 0125 0987 is illegal - why? 0x0, 0x1, 0xABCD - are hexadecimals 0X0, 0X1, 0XABCD - are also correct way of representing them. 11. Wrong ways for integer constants 12,245 no comma to enhance readability 36.0 no dots //Not integer constant 10 20 30 no space in between 123-45-6789 no hyphen to enhance readability 0900 not decimal 12. Wrong ways for octal constants 743 Should start with 0 05280 Illegal digit 8 0777.77 No dots allowed for octal integers 13. Unsigned and Long Integer Constants 50000U - decimal unsigned 123456789L - decimal long 123456789UL - decimal unsigned long 0123456L - octal long 0777777U - octal unsigned 0x5000ABCU - hexa unsigned 0XFFFFFUL - hexa unsigned long 14. Floating Point Constants 3X105 300000. 3e5 3e+5 3E5 3.0e+ .3e6 0.3E6 3 X 105 30E4 30.E+4 300e3 . 15. Floating Point Constants 5.026 X 10-17 5.026E-17 .5026E-16 50.26E-18 .0005026E-13 Beware: Underflows and Overflows because of Finite precision arithmetic 16. Character Constants ASCII code - introduced A is an example a1 is wrong sizeof(char) is 1 byte Declared as char c; Then assign as c = A //Only single quotes 17. Escape Sequences n - Line feed t - Tab r carriage return Where do you use? Get an apostrophe Double quote 0 is the null character 18. ASCII values char c; c = A; c = 101; //Octal of 65 c = x41; //Hexa of 65 c = X41; All are same. The ASCII value of character c is decimal 65 19. Symbolic Constants Those that are defined using #define Remember the PI in your Area of the circle program. 20. Statements {Simple and compound statements Expression and control statements if (condition) S1 else S2 - Control a = b+c; expressionpi = 3.141593; area = pi * radius * radius; } // A compound statement 21. Test Your Understanding Which of the following are not valid identifiers record1 1record $tax file_3 File_3 return Name_and_address Name-and-address 22. Test Your Understanding Which of the following are not valid identifiers record1 1record $tax file_3 File_3 return Name_and_address Name-and-address 23. Test Your Understanding Which of the following is not a ANSI C language keyword? void enum goto function 24. Test Your Understanding Which of the following is not a ANSI C language keyword? void enum goto function 25. Test Your Understanding What will be the result of the following program if the inputs are 2 and 3 main() { float a,b; scanf(%d %d,&a,&b); printf(%f %f,a,b); } 26. Test Your Understanding main() { float a,b; scanf(%d %d,&a,&b); printf(%f %f,a,b); } Ans: It compiles without any problem. It will be garbage. What does this tell? 27. Test Your Understanding main() { float a,b; scanf(%d %d,&a,&b); printf(%f %f,a,b); } Ans: The compiler only catches some type of bugs. You have to take much care. Just because your program compiled without errors/warning, you are not guaranteed of correct results. 28. Test Your Understanding What will be the result of the following program if the inputs are 2 and 3 main() { int a,b; scanf(%d %d,&a,&b); printf(%f %f,a,b); } 29. Test Your Understanding Junk will be printed for this too. main() { int a,b; scanf(%d %d,&a,&b); printf(%f %f,a,b); } 30. Test Your Understanding What will be the result of the following program main() { int a,b; a = 10; b = 20; printf(%d ,a,b); } 31. Test Your Understanding It shall print 10 main() { int a,b; a = 10; b = 20; printf(%d ,a,b); } 32. Conclusion Compilers do not catch most of your bugs Reasons are many Attend the 5th semester Language Translator BTech Core course in CSE Dept You train yourself to be a CAREFUL PROGRAMMER 33. Creative Problem Suppose you are using a program that reads in a large English text file as input and processes it. The program for some reason does not like a set of words and whenever it sees the same in your text file it halts and outputs Error. It is so angry that it does not say what the word is and which line it occurred or any other info. 34. Creative Problem You do not have a list of offending words. Devise a strategy to identify the first offending word in your text. Express the efficiency of your strategy in terms of the number of words in the input text file. 35. Thank You SAARANG Time :-) Do not go home - it is your festival No lab this week People who have pending work to be done can visit labs on Monday and Tuesday to finish backlogs. Lab exercises 1 and 2 Grades to be finalized this week.