software development method & c language elements h&k chapter 1-2 instructor – gokcen...

34
Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

Post on 19-Dec-2015

231 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

Software Development Method & C Language Elements

H&K Chapter 1-2

Instructor – Gokcen Cilingir

Cpt S 121 (June 21, 2011)

Washington State University

Page 2: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

2

Software Development Method

Equivalent to the “Scientific Method” in the

sciences, and the “Systems Approach” in business

Six basic steps:

1. Specify problem requirements2. Analyze the problem3. Design an algorithm to solve the

problem4. Implement the algorithm5. Test and verify the completed program6. Maintain and update the program

C. Hundhausen, A. O’Fallon

Page 3: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

3

Applying the Software Development Method (1)

Warning: You will rarely get it right the first time! This is an iterative process in which you would do well to be persistent and learn from your mistakes

Example problem: Compute the volume of a cone

C. Hundhausen, A. O’Fallon

Page 4: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

4

Applying the Software Development Method (2)

Data RequirementsProblem input:

radius (of the base), height (of the cone)Problem output:

volume (of the cone)Relevant formula:

volume = 1 / 3 * pi * radius^2 * height

C. Hundhausen, A. O’Fallon

Page 5: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

5

Applying the Software Development Method (3)Design

Algorithm Get the radius and height for the cone Compute the volume of the cone Display the resultant volume of the cone

Refined algorithm Get the radius and height for the cone Compute the volume of the cone

volume = 1 / 3 * pi * radius^2 * height Display the resultant volume of the cone

C. Hundhausen, A. O’Fallon

Page 6: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

6

Applying the Software Development Method (4)Implementation (in C)

#include <stdio.h> /* Needed for printf (), scanf () */

#define PI 3.14159 /* Constant macro */

int main (void)

{

int height = 0, radius = 0;

double volume = 0.0;

printf ("Enter height of cone as integer: "); /* Displays prompt message */

scanf ("%d", &height); /* Gets the value from the user/keyboard */

printf ("Enter radius of base of cone as integer: ");

scanf ("%d", &radius);

/* Compute the volume of the given cone */

volume = ((double) 1 / 3) * PI * radius * radius * height;

/* Display the resultant volume of the given cone */

printf ("Volume of cone with radius %d and height %d is %lf.\n", radius, height, volume);

return 0;

}

C. Hundhausen, A. O’Fallon

Page 7: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

7

Applying the Software Development Method (5)Testing

We would compile and execute the program, trying several different input data values and observing the results

Maintenance It is highly unlikely that this particular program will

be of general use to anyone. Most likely, we'll want to update it with new functionality…

C. Hundhausen, A. O’Fallon

Page 8: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

8

C Language Elements

Implementation (in C)#include <stdio.h> /* Needed for printf (), scanf () */

#define PI 3.14159 /* Constant macro */

int main (void)

{

int height = 0, radius = 0;

double volume = 0.0;

printf ("Enter height of cone as integer: "); /* Displays prompt message */

scanf ("%d", &height); /* Gets the value from the user/keyboard */

printf ("Enter radius of base of cone as integer: ");

scanf ("%d", &radius);

/* Compute the volume of the given cone */

volume = ((double) 1 / 3) * PI * radius * radius * height ;

/* Display the resultant volume of the given cone */

printf ("Volume of cone with radius %d and height %d is %lf.\n", radius, height, volume);

return 0;

}

C. Hundhausen, A. O’Fallon

Comment

Preprocessor Directive

Standard Identifier / Library Function

Variable Declaration

Punctuation

Reserved Word

Page 9: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

Preprocessor directives Two most common preprocessor directives:

◦ #include gives a program access to a library NOTE: ANSI (American National Standards

Institute) C defines several standard libraries #include <stdio.h> notifies the preprocessor that

some names used in the program (like printf and scanf) are found in the standard header file stdio.h

◦ #define Binds constant macro definitions with a value. #define PI 3.14159265 directive instructs the

preprocessor to replace each occurrence of PI in the C program text by the value 3.14159265

Page 10: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

Preprocessor directives (II) Preprocessor directives give instruction to

the C preprocessor

C preprocessor modifies the text of C program before it is compiled

A preprocessor directive starts with a number(pound) symbol “#”

Page 11: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

Comments The text starting with /* and ending with */ , is a comment.

These kind of comments can span more than one line. Single-line comments exist in which everything from // to

the end of the line is a comment. You insert comments to document programs and improve

program readability.

Comments do not cause the computer to perform any action when the program is run.

Comments are ignored by the C compiler and do not cause any machine-language object code to be generated.

Comments help other people read and understand your program.

Page 12: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

Function mainAll C programs must define a main function It is the place where execution beginsMain function contains a series of executable

statements separated by punctuation to help compiler interpret the statements

Code blocks are enclosed in braces { }. Function body is a code block, that’s why body of the main function should be enclosed in braces.

A function body has two parts:◦ Declarations: tells the compiler what memory cells

are needed in the function◦ Executable statements: these are translated into

machine language and later executed

Page 13: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

Basic C program: Hello World!

/*Programmer: GCClass: Cpt S 121, Summer 2011, Section 3 Programming Assignment: -Date: June 20, 2011

Description: This program prints out to the screen "Hello CptS 121!"*/

#include <stdio.h>

int main (void){

printf("Hello CptS 121\n");

return 0;}

Page 14: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

Punctuations, special symbolsPunctuations:

◦Commas separate items in a list◦Semicolon appears at the end of several

lines, it’s a statement terminator◦Braces mark the beginning and the end of

code blocks like function bodiesSpecial symbols:

◦Examples: *,-,+, /, %

Page 15: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

Reserved words, identifiersReserved word: a word that has a special meaning in

C, and cannot be used for other purpose◦ Examples: int, double, char, void, return, if, else, while, for,…

Standard identifiers: They also have special meaning in C. For example standard identifiers printf and scanf are names of operations defined in a standard library. Unlike reserved words, they can be redefined, but don’t do it!

User defined identifiers: Users can choose their own identifiers to name memory cells and to name functions they define

Page 16: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

A valid identifier…must contain only letters, digits, and underscorecannot begin with a digitcannot be a reserved C word

ADVICE: an identifier defined in a C library should not be redefined

CONVENTION: Use capital letters while naming your constant macros

ATTENTION: C is case sensitive; for example miles and Miles are in fact two different identifiers for the C compiler

Page 17: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

Choose identifier names wisely!

They should be meaningful, indicating the role of the variables they are naming◦ E.g., average, not a

Make them meaningful but not excessively long

Make sure that identifier names are sufficiently different, so that you don't accidentally mix them up

C. Hundhausen, A. O’Fallon

Page 18: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

Variable declarations All variables used in a program must be

declared ! Declaring a variable reserves memory

space for a value We call them “variables” since the values

stored in them can change as the program executes

Variable data type precedes variable name:◦ double miles; /* will store # of miles */◦ int count; /* will store # of zeros found */◦ char initial; /* will store first initial */

C. Hundhausen, A. O’Fallon

Page 19: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

Data types

Data type = set of values + set of operations on those values

Objects of a data type can be variables (changeable) or constants (non-changeable)

C defines several standard data types◦ int

Models (abstractions) of the integers (at least have range -32767 to 32767, but most machines define 32-bit integers)

Several operations are defined, including +, -, *, /, and % (mod), and comparisons (>, <, <=, >=, ==)

C. Hundhausen, A. O’Fallon

Page 20: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

Data types (II) C defines several standard data types (cont.)

◦ double models real numbers (must include a decimal point) not all real numbers can be modeled because of space

limitations (64 bits) Several operations are defined, including +, -, *, and /, and

comparisons (>, <, <=, >=, ==) Don’t forget, mod(%) operation is undefined on real numbers Scientific notation can be used to write double values (e.g.,

15.0e-3, 314e-01)

◦ char Models individual ASCII characters (8 bits) Can compare characters (>, <, <=, >=, ==) When defining char variables in a program, use single

quotes: 'c',' ','"', etc.

C. Hundhausen, A. O’Fallon

Page 21: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

21

Executable Statements (1)

Follow variable and constant declarations Do the work of the algorithm by

transforming inputs into outputs

C. Hundhausen, A. O’Fallon

60

score1

70

score2

80

score3

???

average

Machine languag

e encodin

g of comput

e average progra

m

60

score1

70

score2

80

score3

70.0

average

Machine languag

e encodin

g of comput

e average progra

m

Page 22: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

22

Executable Statements (2) Assignment statements

◦ Store a computational result into a variable◦ The = operator does the assignment◦ The *, -, +, /, operators perform the

computation◦ Example:

volume = (1/3) * PI * radius * radius * height; /* always 0 because of 1 / 3 */

◦ Note: above will yield an int for 1 / 3 instead of a double, so we need to perform a cast:

volume = ((double) 1 / 3) * PI * radius * radius * height;

C. Hundhausen, A. O’Fallon

Page 23: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

23

Executable Statements (3)

Assignment Statements (cont.)◦ We can also assign the value of one variable to

another:y = x; /* assigns y to the value of x */

y = -x; /* computes the negation of x, assigning it to y */

Input/Output Statements◦ It is extremely useful to obtain input data

interactively from the user, and to display output results to the user

◦ How can this be done in C?

C. Hundhausen, A. O’Fallon

Page 24: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

24

Executable Statements (4)

Input/Output Statements (cont.)◦ The C input/output library defined in <stdio.h>

(which you must #include if you want to use it) includes several functions that perform input and output

◦ Side note on functions: A function is a set of statements that perform

a task. A function performs the task, hiding from you

the details of how it performs the task (they're irrelevant)

C. Hundhausen, A. O’Fallon

Page 25: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

25

Executable Statements (5) Input/Output Statements (cont.)

◦ The printf function can be used to output results to the user's display

◦ Exampleprintf("The student's average is %lf.\n", average);

◦ Notes %lf is a placeholder for double ; %d is a placeholder for int; and %c is a placeholder for char

Multiple placeholders can exist within a single format string (see next example)

'\n' (newline escape sequence) prints a newline (return), causing the cursor to advance to the next line.

C. Hundhausen, A. O’Fallon

Function name

Function arguments

Print listPlaceholder

Page 26: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

26

Executable Statements (6) Input/Output Statements (cont.)

◦ Another example:

char letter_1 = 'C', letter_2 = 'p',

letter_3 = 't', letter_4 = 'S';

int course_num = 121;

printf("Wow, %c%c%c%c %d sure is cool!\n",letter_1,

letter_2, letter_3, letter_4, course_num);

would display

Wow, CptS 121 sure is cool!

C. Hundhausen, A. O’Fallon

Page 27: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

Executable Statements (7)

Input/Output Statements (cont.)

◦ The scanf function reads an input value from the keyboard◦ Its format is similar to that of printf◦ Example: scanf("%d",&score1); forces the program to pause until the user enters a value

from the keyboard and hits the return key.

◦ Notes scanf interprets the input as an int (%d is a placeholder for an int). The int value is then stored into the variable score1. The &

("address of") operator tells scanf where to store the inputted value.

If the & were omitted, scanf would only know the value of score1, not where in memory it is located

Page 28: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

28

Executable Statements (8) Input/Output Statements (cont.)

◦ scanf should always be used in conjunction with a printf statement that displays a prompt, so that the user knows that an input value is expected

◦ Example:

printf ("Enter radius of base of cone as integer: "); scanf ("%d", &radius);

◦ Notes User may separate values with either spaces or returns If more values are entered than are specified in a scanf,

they are saved ("buffered") for the next call to scanf

C. Hundhausen, A. O’Fallon

Page 29: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

29

Executable Statements (9) return statement

◦ In C, most functions, including main, return a value (just like a mathematical function)

◦ The return statement specifies the value to be returned

◦ The type of the return value must match the declared return value of the function int main(void) { … } indicates that an int is to be returned;

hence, main must return an int

◦ In the main function, return(0) (a return value of 0) tells the operating system that the program executed without error

◦ Return marks the exit point in a code block; whatever statements you may have after a return statement won’t get executed!

C. Hundhausen, A. O’Fallon

Page 30: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

30

General Form of a C Program (1)

General template of a C program is as follows:

comment blockpreprocessor directivesmain function heading{

declarationsexecutable statements

}C. Hundhausen, A.

O’Fallon

Page 31: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

31

General Form of a C Program (2)

Statements may extend over a single line (return is treated as a space)

◦ Exception: Do not break up a statement in the middle of a reserved word, constant, or quoted format string

More than one statement can go on a single line

The programs you write should adhere to good C style

◦ Makes them more readable, but does not affect compilation

C. Hundhausen, A. O’Fallon

Page 32: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

32

General Form of a C Program (3)

What is good C style?

◦ When you write C programs for this class, refer to the "Recommended C Style and Coding Standards" found on the schedule page

◦ Insert blank space before and after commas and operators such as +, =, /, *

C. Hundhausen, A. O’Fallon

Page 33: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

33

General Form of a C Program (4)

What is good C style?◦ Liberally comment your programs

Document the purpose of each variable where it is declared: Begin programs with a header section that indicates

/* * Programmer: * Class: CptS 121, Summer 2011 * Programming Assignment #0 * Date: * * Description: This program computes the * volume of a cylinder. */

C. Hundhausen, A. O’Fallon

Page 34: Software Development Method & C Language Elements H&K Chapter 1-2 Instructor – Gokcen Cilingir Cpt S 121 (June 21, 2011) Washington State University

Summary of C elements introduced in this lecturePreprocessor directives Comment blocks, single line commentsMain functionPunctuations, special symbolsReserved words, standard and user-defined

identifiersVariable declarationsStandard data typesExecutable Statements

◦ Assignment Statements

◦ Input/Output Statements: printf, scanf

◦ return statement