1 Lecture04: Basic Types & Function Slides modified from Yin Lou, Cornell CS2022: Introduction to C.

Slides:



Advertisements
Similar presentations
Modular Programming With Functions
Advertisements

Computer Programming w/ Eng. Applications
1 ICS103 Programming in C Lecture 5: Introduction to Functions.
1 Lecture 7  Fundamental data types in C  Data type conversion:  Automatic  Casting  Character processing  getchar()  putchar()  Macros on ctype.h.
1 Homework Turn in HW2 at start of next class. Starting Chapter 2 K&R. Read ahead. HW3 is on line. –Due: class 9, but a lot to do! –You may want to get.
Display a 12-Month Calendar CS-2301 D-term Programming Assignment #2 12-Month Calendar CS-2301 System Programming C-term 2009 (Slides include materials.
1 Fundamental Data Types. 2 Declaration All variables must be declared before being used. –Tells the compiler to set aside an appropriate amount of space.
More on Numerical Computation CS-2301 B-term More on Numerical Computation CS-2301, System Programming for Non-majors (Slides include materials from.
1 CSE1301 Computer Programming: Lecture 9 Input/Output.
1 CSC 1401 S1 Computer Programming I Hamid Harroud School of Science and Engineering, Akhawayn University
Assignment #2, 12- month Calendar CS-2301, B-Term Programming Assignment #2 12-Month Calendar CS-2301, System Programming for Non-Majors (Slides.
12-2 Know how if and switch C statements control the sequence of execution of statements. Be able to use relational and logical operators in the conditional.
Programming Variables. Named area in the computer memory, intended to contain values of a certain kind (integers, real numbers, characters etc.) They.
Simple Data Type Representation and conversion of numbers
CSC 107 – Programming For Science. Announcements  Lectures may not cover all material from book  Material that is most difficult or challenging is focus.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Outline Variables 1.
1 COMP 2130 Introduction to Computer Systems Computing Science Thompson Rivers University.
Copyright © 2008 W. W. Norton & Company. All rights reserved. 1 Chapter 4 Expressions.
A Variable is symbolic name that can be given different values. Variables are stored in particular places in the computer ‘s memory. When a variable is.
18-2 Understand “Scope” of an Identifier Know the Storage Classes of variables and functions Related Chapter: ABC 5.10, 5.11.
C Tokens Identifiers Keywords Constants Operators Special symbols.
Sales person receive RM200/week plus 9% of their gross sales for that week. Write an algorithms to calculate the sales person’s earning from the input.
1 計算機程式設計 Introduction to Computer Programming Lecture01: Introduction and Hello World 9/10/2012 Slides modified from Yin Lou, Cornell CS2022: Introduction.
1 Lecture04: Function Slides modified from Yin Lou, Cornell CS2022: Introduction to C.
Data Types. Data types Data type tells the type of data, that you are going to store in memory. It gives the information to compiler that how much memory.
Fundamentals of C and C++ Programming. EEL 3801 – Lotzi Bölöni Sub-Topics  Basic Program Structure  Variables - Types and Declarations  Basic Program.
Chapter 11: Pointers Copyright © 2008 W. W. Norton & Company. All rights reserved. 1 Chapter 11 Pointers.
BASICS CONCEPTS OF ‘C’.  C Character Set C Character Set  Tokens in C Tokens in C  Constants Constants  Variables Variables  Global Variables Global.
Data Structures R e c u r s i o n. Recursive Thinking Recursion is a problem-solving approach that can be used to generate simple solutions to certain.
19&20-2 Know how to declare pointer variables. Understand the & (address) and *(indirection) operators. Dynamic Memory Allocation Related Chapter: ABC.
CMPSC 16 Problem Solving with Computers I Spring 2014 Instructor: Lucas Bang Lecture 3: Introduction to C: Input & Output, Assignments, Math functions.
Data Type. Syntax Rules Recap keywords breakdoubleifsizeofvoid caseelseintstatic..... Identifiers not#me123th scanfprintf _idso_am_igedd007 Constant ‘a’‘+’
CS115 FALL Senem KUMOVA-METİN1 The Fundamental Data Types CHAPTER 3.
CSC141 Introduction to Computer Programming Teacher: AHMED MUMTAZ MUSTEHSAN Lecture - 6.
Pointers *, &, array similarities, functions, sizeof.
Chapter 7 C supports two fundamentally different kinds of numeric types: (a) integer types - whole numbers (1) signed (2) unsigned (b) floating types –
Administrative things
CSE1301 Computer Programming: Lecture 6 Input/Output.
Tokens in C  Keywords  These are reserved words of the C language. For example int, float, if, else, for, while etc.  Identifiers  An Identifier is.
DATA TYPE, MEMORY, AND FUNCTION Dong-Chul Kim BioMeCIS UTA 2/18/
1 Lecture03: Control Flow 9/24/2012 Slides modified from Yin Lou, Cornell CS2022: Introduction to C.
Gator Engineering Project 1 Grades released Re-grading –Within one week –TA: Fardad, or office hours: MW 2:00 – 4:00 PM TA Huiyuan’s office hour.
Dale Roberts Department of Computer and Information Science, School of Science, IUPUI Dale Roberts, Lecturer Computer Science, IUPUI
ECE 103 Engineering Programming Chapter 30 C Functions Herbert G. Mayer, PSU CS Status 8/9/2014 Initial content copied verbatim from ECE 103 material developed.
7. BASIC TYPES. Systems of numeration Numeric Types C’s basic types include integer types and floating types. Integer types can be either signed or unsigned.
+ Note On the Use of Different Data Types Use the data type that conserves memory and still accomplishes the desired purpose. For example, depending on.
Lecture 3: More Java Basics Michael Hsu CSULA. Recall From Lecture Two  Write a basic program in Java  The process of writing, compiling, and running.
1 ENERGY 211 / CME 211 Lecture 3 September 26, 2008.
Basic Types Chapter 7 Copyright © 2008 W. W. Norton & Company.
CSE 220 – C Programming Pointers.
Administrative things
Tokens in C Keywords Identifiers Constants
Input/output.
7. BASIC TYPES.
INC 161 , CPE 100 Computer Programming
Fundamental Data Types
C programming---basic
Administrative things
Input and Output Lecture 4.
Formatted and Unformatted Input/Output Functions
Variables In programming, we often need to have places to store data. These receptacles are called variables. They are called that because they can change.
Chapter 6 - Functions Outline 5.1 Introduction
Recursion.
Lectures on Numerical Methods
Basic Types Chapter 7 Copyright © 2008 W. W. Norton & Company.
Fundamental Data Types
Introduction to C Programming
Administrative things
Administrative things
Functions that return a value
Presentation transcript:

1 Lecture04: Basic Types & Function Slides modified from Yin Lou, Cornell CS2022: Introduction to C

Administrative things Assignment #3 is on the course webpage due next week. 2

Review from Last Week if, else-if, else ? : switch, case, default, break for ( ; ; ) while ( ) do while ( ); break, continue 3

Basic Types Have already used two C basic types; int and double Learn the rest of the basic types –Integer type: short int, int, long int, long long int + signed, unsigned –Floating types: float, double, long double –Character types: char 4

Integer Type: short int Different integer types have different sizes For examples: size of (short int) is 2 bytes Declare variable with short int: –short int a; // short a; What is a byte? A byte = 8 bits. What is a bit? How to represent an integer 5? How to represent a positive/negative sign? –The sign bit: 0xxxxxx (positive or zero), 1xxxxxx (negative) What is the largest number for short int? What is the smallest number for short int?

Integer Type: unsigned short int An integer with no sign bit (zero or positive) Declare variable with unsigned short int: –unsigned short int a; What is the largest/smallest number for unsigned short int? 6

Integer Type: short int, int, long int, long long int Size rule: short int < int <= long int <= long long int How do you find out these sizes? sizeof() #include int main() { printf("sizes: short int(%d), int(%d), long int(%d), long long int(%d)\n", sizeof(short int), sizeof(int), sizeof(long int), sizeof(long long int)); } On my machine: –short int: 2 bytes –int: 4 bytes –long int: 4 bytes –long long int: 8 bytes 7

Integer Type: short int, int, long int, long long int Size rule: short int < int <= long int <= long long int How do you find out these sizes? sizeof() #include int main() { printf("sizes: short int(%d), int(%d), long int(%d), long long int(%d)\n", sizeof(short int), sizeof(int), sizeof(long int), sizeof(long long int)); } On my machine: –short int(2B): -32,768 ~ 32,767 –int(4B): -2,147,483,648 ~ 2,147,483,648 –long long int(8B): -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,808 8

Octal and Hexadecimal Numbers Decimal(base 10) Octal(base 8) Hexadecimal(base 16)0xf0xff0x7fff 9

Reading & Writing Integers unsigned int u; scanf(“%u”, &u); // read u in base 10 printf(“%u”, u);// write u in base 10 scanf(“%o”, &u); // read u in base 8 printf(“%o”, u);// write u in base 8 scanf(“%x”, &u); // read u in base 16 printf(“%x”, u);// write u in base 16 short int s; scanf(“%hd”, &s); // add h printf(“%hd”, s); long int l; scanf(“%ld”, &l); // add l printf(“%ld”, l); long long int ll; scanf(“%lld”, &ll); // add ll printf(“%lld”, ll); 10

Common Pitfall: Integer Overflow short i; i = ; printf(“%d\n”, i); 11

Floating Types float: 4B, one bit for sign, 8 bits for exponent, 23 bits for fraction –Range: * 10^-38 ~ * 10^38 –6 digits precision double: 8B –Range: *10^-308 ~ *10^308 –15 bits precision long double: 12B 12

Reading & Writing Floats float f; scanf(“%f”, &f); printf(“%f”, f); double d; scanf(“%lf”, &d); // add l printf(“%lf”, d); long double ld; scanf(“%Lf”, &ld); // add L printf(“%Lf”, ld); 13

In-Class Exercise 3-1 Write a program that computes the factorial of a positive integer. Note that factorial function F(n) = n*(n-1)*(n-2)*…1 Enter a positive integer: 6 Factorial of 6: 720 (a) Use a short variable to store the value of the factorial. What is the largest value of n for which the program correctly prints the factorial of n? (b) Repeat (a) using an int variable instead. (c) Repeat (a) using a long variable instead. (d) Repeat (a) using a long long variable instead. (e) Repeat (a) using a float, double, long double variable instead. 14

Character Types char: 1B –256 characters char ch; ch = ‘a’; ch = ‘A’; ch = ‘0’; ch = ‘ ‘; 15

C treats characters as small integers char ch; int i; i = ‘a’;// i is now 97 ch = 65;// ch is now ‘A’ ch = ch + 1;// ch is now ‘B’ ch++;// ch is now ‘C’ if (‘a’ <= ch && ch <= ‘z’)// ch can also be compared like numbers ch = ch – ‘a’ + ‘A’; for (ch = ‘A’; ch <= ‘Z’; ch++) … 16

Reading & Writing Characters char ch; scanf(“%c”, &ch); // read a single character, including a space! printf(“%c”, ch); scanf(“ %c”, &ch);// skip white spaces, then read ch do { scanf(“%c”, &ch); } while (ch != ‘\n’);// detec the end of line char putchar(ch);// write a char ch = getchar();// read a char and store it in ch while ((ch = getchar()) == ‘ ‘); // skip spaces 17

In-Class Exercise 3-2 Write a program that takes a first name and last name entered by the user and displays the last name, a comma, and the first initial, followed by a period: Enter a first and last name: Lloyd Fosdick Fosdick, L. 18

Type Conversion & Casting char c; short s; int I; unsigned int u long int l; usigned long int ul; float f; double d; long double ld; i = i + c; // c is converted to int i = i + s; // s is converted to int u = u + I; // l is converted to int l = l + u; // u is converted to long int i = (int) f; // f is converted to int f = (float) i; // I is converted to float c = 10000; // wrong s = ; // wrong 19

Math Functions Many math functions are defined in –pow(a, b) - Compute a b –exp(a) - Compute e a –log(a) - Compute natural logarithm –log10(a) - Compute common logarithm –sqrt(a) - Compute square root –fabs(a) - Compute absolute value –ceil/floor - Round up/down value –cos, sin, tan –acos, asin, atan 20

Functions Purpose of functions –Break a program into pieces that are easier to write and understand Break down a big complex problem into small sub-problems that are easy to solve What if the subproblems are still difficult to solve? More about this in the next lecture. –Makes recursive algorithms easier to implement –Promotes code reuse Disadvantage of functions –Function calls add some memory and time overhead 21

A Simple Function Compute base exp 22 int power(int base, int exp) { int i, p = 1; for (i = 1; i <= exp; ++i) { p *= base; // p = p * base; } return p; }

Simple Function in Context #include int power(int base, int exp); // function prototype or declaration void main() { int i = 3, j = 4; printf("%d^%d is %d.\n", i, j, power(i, j));// function call } int power(int base, int exp) // function definition { int i, p = 1; for (i = 1; i <= exp; ++i) { p *= base; } return p; } 23

Function Return Values If a function returns type void, then no return statement is needed. If a function returns another type, then a return statement is required along all possible execution paths. What’s wrong with the left? 24 #include int foo(int arg) { if (arg == 1) { return 1; } void main() { printf("%d\n", foo(0)); }

Call by Value Function arguments in C are passed by value –The value of the argument is passed, not a reference –Functions are given a new copy of their arguments –So a function can't modify the value of a variable in the calling function (unless you use pointers) –Pointers in the next lecture 25 #include int foo(int a) { a = 3; return a; } void main() { int a = 1, b; b = foo(a); printf("%d %d\n", a, b); // Output 1 3 }

Call by Value: More example #include void swap(int a, int b) { int t = a; a = b; b = t; } void main() { int a = 1, b = 2; swap(a, b); printf("%d %d\n", a, b); // Output 1 2 } 26

Call by Value: Tradeoff Call by value has advantages and disadvantages Advantage: some functions are easier to write 27 int power(int base, int exp) { int result = 1; for (; exp >= 1; exp = exp - 1) { result *= base; } return result; }

Call by Value: Tradeoff Disadvantage: sometimes you’d like to modify an argument (e.g. swap() function) –What’s wrong with the left? –We’ll see how to do this using pointers later 28 void swap (int x, int y) { int temp = x; x = y; y = temp; }

In-Class Exercise 3-3 Write a function that prints the following diamond shape. Your program first reads an odd number in the range 1 to 19 to specify the number of rows in the diamond and a character. You then call a function void printline(int ns, int nc, char c) that print one line with ns number of spaces, nc number of characters, and then ns number of spaces. Input the number of rows and the symbol char in the diamond> 5 * * *** ***** *** * 29

Recursion int fact(int n) { if (n == 0) { return 1; } else { return n * fact(n - 1); } // non-recursive version int fact(int n) { int f = 1; int i; for (i=n; i>1; i--) { f = f*i; } return f; } 30

In-Class Exercise 3-4 Write a recursive function to compute the Fibonacci number, namely, besides main function, you must implement another Fibonacci function. Note that the Fibonacci number sequence is 0, 1, 1, 2, 3, 5, 8, 13, 21. Your program should have the following input & output. Enter an integer> 0 Fib(0) = 0 Enter an integer> 6 Fib(6) = 8 31

Declaration vs. Definition Declaration –A declaration announces the properties of a variable (primarily its type). –Example: extern int n; extern double val[]; Definition –A definition also causes storage to be set aside. –Example: int n; double val[MAX LEN]; 32

Manage Your Project It's always recommended to modularize your project. How? Write functions and paste them in new file? Definitions and declarations are shared among many source files. How to centralize this, so that there is only one copy to get and keep right as the program evolves? We could use header files. 33

Header File Place common material in a header file. Can be included as needed. 34 Example: mymath.h int fact(int n); int power(int power, int exp);

Example power.c #include "mymath.h" int power(int base, int exp) { int result = 1; int i; for (i = 1; i <= exp; ++i) { result *= base; } return result; } fact.c #include "mymath.h" int fact(int n) { if (n == 0) { return 1; } else { return n * fact(n - 1); } 35

Example main.c #include #include "mymath.h" void main() { printf("%d\n", power(5, 3)); printf("%d\n", fact(5)); } 36

How to compile in CBs? TA will talk about this 37