cs 108 computing fundamentals notes for thursday september 10, 2015

55
CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

Upload: gavin-daniel

Post on 02-Jan-2016

217 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

CS 108 Computing FundamentalsNotes for Thursday September 10, 2015

Page 2: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

printf( )

• A standard output function found in stdio.h

• Displays info to the monitor… here’s an example:

printf ( " \n I hope you C things my way. \n " ) ;

• We are calling the printf( ) … we are sending the called printf( ) something to use when it performs its magic… that something that is being sent to the function in any function call is officially known as an argument or an actual argument or an actual parameter which is everything between the ( ) of the function call… the arguments list or actual parameters/actual arguments list may be empty (this means that nothing is sent to the function when it is called)… it is incorrect to place the keyword void here (in the function call's arguments list)

Page 3: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

More printf( )

printf(" The batting average is %f ", batting_average);

• Arguments / Actual arguments / Actual parameters (between the ( ) of the call)

Format string (between the " " )

Placeholders or format specifiers or conversion specifiers (look for %)… in this case, just one: %f

Data list ( constant(s), identifiers for variable(s), function call(s), and/or expression(s) )… in this case: batting_average … which is a variable identifier/name

Data list identifiers (constant(s) or function call(s) or variable name(s) or expression(s)) must correspond one-to-one, by position, with the format specifier(s) in the format string

Page 4: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

scanf( ) • scanf( ) is standard input function found in stdio.h

• Copies data from an input device (usually the keyboard) into a variable(s) address (es) specified as an argument/ actual argument/actual parameter

scanf( " %f " , &batting_average) ;

• Actual arguments/Actual parameters (between the ( ) of the call)

Format string

Format specifiers or placeholders or conversion specifiers

Address list ( variable name(s) ) preceded by & )

& is the “address of” operator and translates to “the address of variable____ ”

Do not ever place text inside the scanf( ) format string; this is a place for format specifiers or spaces only

Page 5: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015
Page 6: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015
Page 7: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

The "Urban Inside-Out 1-Step-at-a-Time Method" of Developing Programs

1. Determine desired output(s) and input(s), then develop your algorithm

2. Place the algorithm as a series of comments inside the main( ) block of statements (use my "C Program Template") as a guide

3. Focus on the first step of the algorithm

4. Begin coding by translating this step of the algorithm to C source-code (save changes!!)

5. Add any additional C code necessary to support the translation of the single algorithm step (save changes!!)

6. Compile (troubleshoot/fix, save changes, and recompile, if necessary)

7. Run and Test (troubleshoot/fix, save changes, recompile, rerun, retest and repeat, as necessary)

8. Comment thoroughly (save changes, compile, and test one last time)

9. Move on to the next step of the algorithm and proceed with "Inside-Out Method" step 4 through 8 until all steps of the algorithm have been satisfied

10. Terminate

Page 8: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

Practice

Obtain the length and the width of a rectangle from a user, calculate the area of the rectangle and then display it. For this exercise we’re interested in whole numbers only.

First step: determine your input(s) and output(s), then develop an algorithm… you have 5 minutes

Page 9: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

Input(s) and Output(s) ?

Obtain the length and the width of a rectangle from a user, calculate the area of the rectangle and then display it. For this exercise we’re interested in whole numbers only.

Input(s): 1) length and 2) width

Output(s): 1) area of the rectangle

Page 10: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

Practice Algorithm1. Greet user (tell user the purpose of the program)

2. Prompt the user to enter the length of a rectangle

3. Read user's input for length

4. Prompt the user to enter the width of the rectangle

5. Read the user's input for width

6. Calculate the area (formula: multiply length times width)

7. Display the area to the screen

8. Sign-off with the user

9. Terminate the program

Page 11: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

Let’s Write the Code Using the "Urban Inside-Out 1-Step-at-a-Time Method" (1)

1. Determine desired output(s) and input(s), then develop your algorithm

2. Place the algorithm as a series of comments inside the main( ) block of statements (use my "C Program Template") as a guide

3. Focus on the first step of the algorithm

4. Begin coding by translating this step of the algorithm to C source-code (save changes!!)

5. Add any additional C code necessary to support the translation of the single algorithm step (save changes!!)

6. Compile (troubleshoot/fix, save changes, and recompile, if necessary)

7. Run and Test (troubleshoot/fix, save changes, recompile, rerun, retest and repeat, as necessary)

8. Comment thoroughly (save changes, compile, and test one last time)

9. Move on to the next step of the algorithm and proceed with "Inside-Out Method" step 4 through 8 until all steps of the algorithm have been satisfied

10. Terminate

Page 12: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

Let’s Write the Code Using the "Urban Inside-Out 1-Step-at-a-Time Method" (2)

2. Place the algorithm as a series of comments at the top of the

main( ) block of statements

Note: make sure that your Putty window is 90 - 92 characters wide… a narrower setting will cause unwanted "wrapping" of text

•Go to http://www.cs.sunyit.edu/~urbanc/cs_108_sep_10a.html

Page 13: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

Let’s Write the Code Using the "Urban Inside-Out 1-Step-at-a-Time Method" (3)

3. Focus on the first step of the algorithm

1. GREET USER (TELL USER THE PURPOSE OF THE PROGRAM)

2. PROMPT THE USER TO ENTER THE LENGTH OF A RECTANGLE

3. READ USER'S INPUT FOR LENGTH

4. PROMPT THE USER TO ENTER THE WIDTH OF THE RECTANGLE

5. READ THE USER'S INPUT FOR WIDTH

6. CALCULATE THE AREA BY MULTIPLYING LENGTH TIMES WIDTH

7. DISPLAY THE AREA TO THE SCREEN

8. SIGN-OFF WITH THE USER

9. TERMINATE THE PROGRAM

Page 14: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

Let’s Write the Code Using the "Urban Inside-Out 1-Step-at-a-Time Method" (4)

4. Begin coding by translating this step of the algorithm into C source-code (save changes!!)

1. GREET USER (TELL USER THE PURPOSE OF THE PROGRAM)

This program calculates the area of a rectangle.

• Go to http://www.cs.sunyit.edu/~urbanc/cs_108_sep_10b.html

• This is not yet complete… this “string of text” that we want displayed to the screen needs some C-specific additions (we need to transform this text string into C code that contains this text string that will be displayed to the screen).

Page 15: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

Let’s Write the Code Using the "Urban Inside-Out 1-Step-at-a-Time Method" (5)

4. Begin coding by translating this step of the algorithm into C source-code (save changes!!)

1. GREET USER (TELL USER THE PURPOSE OF THE PROGRAM)

printf( " \n This program calculates the area of a rectangle. \n " ) ;

• Go to http://www.cs.sunyit.edu/~urbanc/cs_108_sep_10c.html

• This C statement completes the task of algorithm step #1… but we need to add more supporting C code to make it work… on to Inside-Out Method Step 4

Page 16: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

Let’s Write the Code Using the "Urban Inside-Out 1-Step-at-a-Time Method" (6)

5. Add any additional C code necessary to support the translation of the single algorithm step (save changes!!)

1. GREET USER (TELL USER THE PURPOSE OF THE PROGRAM)

# include <stdio.h>

int main ( void )

{

printf( " \n This program calculates the area of a rectangle. \n " ) ;

return ( 0 ) ;

}

• Go to http://www.cs.sunyit.edu/~urbanc/cs_108_sep_10d.html

Page 17: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

Let’s Write the Code Using the "Urban Inside-Out 1-Step-at-a-Time Method" (7)

6. Compile (troubleshoot/fix, save changes, and recompile, if necessary) gcc sep10.c

1. GREET USER (TELL USER THE PURPOSE OF THE PROGRAM)

# include <stdio.h>

int main ( void )

{

printf( " \n This program calculates the area of a rectangle. \n " ) ;

return ( 0 ) ;

}

Page 18: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

Let’s Write the Code Using the "Urban Inside-Out 1-Step-at-a-Time Method" (8)

7. Run and Test (troubleshoot/fix, save changes, recompile, rerun, retest and repeat, as necessary) ./a.out

1. GREET USER AND TELL USER THE PURPOSE OF THE PROGRAM

# include <stdio.h>

int main ( void )

{

printf( " \n This program calculates the area of a rectangle. \n " ) ;

return ( 0 ) ;

}

Page 19: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

Let’s Write the Code Using the "Urban Inside-Out 1-Step-at-a-Time Method" (9)

8. Comment thoroughly (save changes, compile, and test one last time)

1. GREET USER AND TELL USER THE PURPOSE OF THE PROGRAM

/*****************************************************************************/

/* #include PREPROCESSOR DIRECTIVE(S) (IF ANY) ARE DIRECTLY BELOW */

/*****************************************************************************/

#include <stdio.h> // PREPROCESSOR DIRECTIVE THAT ALLOWS THE USE OF printf( )

•Go to http://www.cs.sunyit.edu/~urbanc/cs_108_sep_10e.html

Page 20: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

Let’s Write the Code Using the "Urban Inside-Out 1-Step-at-a-Time Method" (10)

9. Move on to the next step of the algorithm and proceed with "Inside-Out Method" step 4 through 8 until all steps of the algorithm have been satisfied.

•Next algorithm step is:

2. PROMPT USER TO ENTER THE LENGTH OF A RECTANGLE

Page 21: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

Let’s Write the Code Using the "Urban Inside-Out 1-Step-at-a-Time Method" (11)

4. Begin coding by translating this step of the algorithm into C source-code (save changes!!)

2. PROMPT USER TO ENTER THE LENGTH OF A RECTANGLE

Please enter the length of the rectangle:

•Go to http://www.cs.sunyit.edu/~urbanc/cs_108_sep_10f.html

Page 22: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

Let’s Write the Code Using the "Urban Inside-Out 1-Step-at-a-Time Method" (12)

5. Add any additional C code necessary to support the translation of the single algorithm step… save changes!!

2. PROMPT USER TO ENTER THE LENGTH OF A RECTANGLE

printf( " \n Please enter the length of the rectangle: " ) ;

•Go to http://www.cs.sunyit.edu/~urbanc/cs_108_sep_10g.html

Page 23: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

Let’s Write the Code Using the "Urban Inside-Out 1-Step-at-a-Time Method" (13)

6. Compile (troubleshoot/fix, save changes, and recompile, if necessary) gcc sep10.c

2. PROMPT USER TO ENTER THE LENGTH OF A RECTANGLE

Page 24: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

Let’s Write the Code Using the "Urban Inside-Out 1-Step-at-a-Time Method" (4)

7. Run and Test (troubleshoot/fix, save changes, recompile, rerun, retest and repeat, as necessary) ./a.out

2. PROMPT USER TO ENTER THE LENGTH OF A RECTANGLE

Page 25: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

Let’s Write the Code Using the "Urban Inside-Out 1-Step-at-a-Time Method" (15)

8. Comment thoroughly (save changes, compile, and test one last time)

2. PROMPT USER TO ENTER THE LENGTH OF A RECTANGLE

•No additional commentary necessary for this step

Page 26: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

9. Move on to the next step of the algorithm and proceed with "Inside-Out Method" step 4 through 8 until all steps of the algorithm have been satisfied.

•Next algorithm step is:

3. READ THE USER'S INPUT FOR LENGTH

Page 27: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

4. Begin coding by translating this step of the algorithm into C source-code (save changes!!)

3. READ THE USER'S INPUT FOR LENGTH

scanf( "%f", &length ) ;

• Go to http://www.cs.sunyit.edu/~urbanc/cs_108_sep_10h.html

Page 28: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

5. Add any additional C code necessary to support the translation of the single algorithm step… save changes!!

3. READ THE USER'S INPUT FOR LENGTH

int main ( void )

{ // Marks the beginning of main function's statements

/**********************************************************************************************************/

/* LOCAL VARIABLE(S) FOR main( ) (IF ANY) ARE DECLARED DIRECTLY BELOW */

/**********************************************************************************************************/

float length = 0.0 ;

•Cannot store a value to a variable (which is accomplished on the previous slide's purple code) unless a variable is declared/created (accomplished by the purple code on this slide)

•Go to http://www.cs.sunyit.edu/~urbanc/cs_108_sep_10i.html

Page 29: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

6. Compile (troubleshoot/fix, save changes, and recompile, if necessary) gcc sep10.c

3. READ THE USER'S INPUT FOR LENGTH

Page 30: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

7. Run and Test (troubleshoot/fix, save changes, recompile, rerun, retest and repeat, as necessary) ./a.out

3. READ THE USER'S INPUT FOR LENGTH

•Adding a "test print statement" (see the black printf( ) call below) is a test that helps confirm that your code is correct

scanf( "%f", &length ) ;

printf( " \n\n TEST TEST the value of length is %d \n\n " , length ) ;

•Go to http://www.cs.sunyit.edu/~urbanc/cs_108_sep_10j.html

Mistake!

Page 31: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

8. Comment thoroughly (save changes, compile, and test one last time)

3. READ THE USER'S INPUT FOR LENGTH

/***********************************************************************************************************/

/* #include PREPROCESSOR DIRECTIVE(S) (IF ANY) ARE DIRECTLY BELOW */

/***********************************************************************************************************/

#include <stdio.h> // PREPROCESSOR DIRECTIVE THAT ALLOWS THE USE OF printf( )

// AND scanf( )

/**********************************************************************************************************/

/* ALGORITHM STEP 3: READ TO USER'S INPUT FOR LENGTH */

/**********************************************************************************************************/

scanf( "%d", &length ) ;

•Added the purple comment above and removed the test printf( ) call

•Go to http://www.cs.sunyit.edu/~urbanc/cs_108_sep_10k.html

Page 32: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

9. Move on to the next step of the algorithm and proceed with "Inside-Out Method" step 4 through 8 until all steps of the algorithm have been satisfied.

4. PROMPT THE USER TO ENTER THE WIDTH OF THE RECTANGLE

Page 33: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

• Let's do the next several steps together using nano

• The completed program is found at the following link:

http://web.cs.sunyit.edu/~urbanc/cs_108_sep_10L.html

Page 34: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

More About Compiling• ./a.out is overwritten each time a new program is compiled this way… not great if you want to save your compiled programs

Instead, use the following gcc compiler command

general form: gcc file_name.c -o file_name.exe

example: gcc 3.c -o 3.exe

(the -o switch allows your to name your output file )

Page 35: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

nano &pico Shortcuts

• while holding ctrl press w followed by t which produces a prompt that asks you on which line you wouyd like the cursor to be positioned

• pressing ctrl and c produces the number of the line on which the cursor is currently positioned

• pressing ctrl and y moves the cursor up one page

• pressing ctrl and v moves the cursor down one page

• pressing ctrl and k deletes an entire line

Page 36: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

C Functions QuickStart

• What is a function?

• Why are functions useful?

• What are the characteristics of a function?

• Examples!!

Page 37: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

What is a function?

• Function can be thought of as a module or a subprogram

A named block of source-code that is designed to perform a specific task within a program

• Examples of functions with which we’ve worked: main( ) , printf ( ) , and scanf( )

Page 38: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

Functions Are Very Flexible Tools

• Many useful functions are found in libraries

See Table 3.1 and Appendix B in the textbook

• Some functions are general while others are very specific in nature

and use

• Some functions have parameters/arguments and some do not Some functions allow a varying parameters… such as printf( ) and scanf( )

• Some functions return a single value and some do not return a

single value (function cannot return multiple values)Those functions that don't return a single value are "void functions"

• Function libraries are not panaceas: we need ability to create our

own functions (programmer-created functions… next week!!)

Page 39: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

Let's Start With main ( )• Most basic general syntax guide for a program where main( ) is the only function

the programmer must create (similar to your homework assignment)

preprocessor directives //comments

main-function-return-value-data-type main ( void )

{ //comments

variable declaration statements ; //comments

instruction statements ; //comments

return statement ; //comments

} //comments

Page 40: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

Let's Work on an Example

• Write a C program that satisfies the following requirements:

main( ) is the only programmer-created function

the program obtains an integer value from the user

the program displays the user's input along with the square

and the cube of the user's input

What should we do first?

Page 41: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

Let's Work on an Example continued

What should we do first?

Determine input(s) and output(s)

Develop an algorithm

Page 42: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

Let's Work on an Example continued

What should we do first?

Determine input(s) and output(s)

Inputs: an integer from the user

Outputs: the user's input, its square, and its cube

Develop an algorithm

Page 43: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

Let's Work on an Example continued Our algorithm!! Remember: algorithms should be about "what

to do" not about "how to do it"

1. DISPLAY INTRO MESSAGE

2. PROMPT USER TO ENTER AN INTEGER

3. READ THE USER'S INPUT

4. CALCULATE THE SQUARE VALUE (INPUT * INPUT)

5. CALCULATE THE CUBE VALUE (INPUT * INPUT *

INPUT)

6. DISPLAY THE USER'S INPUT, ITS SQUARED VALUE,

AND ITS CUBED VALUE

7. DISPLAY AN ENDING MESSAGE

8. STOP

Page 44: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

Let's Work on an Example continued

Transfer your algorithm to a source-code file and make it a

comment

I recommend that you begin writing your C code by starting with

the first step of you algorithm… this means that you start

writing code "in the middle" of your program

That why I call this the "Urban Inside-Out 1-Step-at-a-Time

Method" of source code development

We will develop this is class together using nano or pico and

gcc

Page 45: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

Let’s Write the Code Using the "Urban Inside-Out 1-Step-at-a-Time Method"

1. Determine desired output(s) and input(s), then develop your algorithm

2. Place the algorithm as a series of comments inside the main( ) block of statements (use my "C Program Template") as a guide

3. Focus on the first step of the algorithm

4. Begin coding by translating this step of the algorithm to C source-code (save changes!!)

5. Add any additional C code necessary to support the translation of the single algorithm step (save changes!!)

6. Compile (troubleshoot/fix, save changes, and recompile, if necessary)

7. Run and Test (troubleshoot/fix, save changes, recompile, rerun, retest and repeat, as necessary)

8. Comment thoroughly (save changes, compile, and test one last time)

9. Move on to the next step of the algorithm and proceed with "Inside-Out Method" step 4 through 8 until all steps of the algorithm have been satisfied

10. Terminate

Page 46: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

Let's play with our program and inject some errors to our

source-code

By injecting errors we can learn how those errors manifest

themselves (at compile time or at run time, for example).

First, let's remove the & from a scanf( ) (a very common

mistake)

Let's remove a variety of other piece of our program

(always removing one piece at a time to see how that

impacts compilation and then execution)

Let's use Google to our advantage to help us troubleshoot

• Play with your food!! Seriously, play with our programs!!

Develop some intellectual curiosity!

Page 47: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

What is an Expression

• An expression is a sequence of operators and operands

• Constructed according to the language's syntax

• Evaluates to a specific data type's single value.

• Does not necessarily end with ;

• Operand: the name given to the entity or entities that are operated on by an operator ( entities: integer constant(s), real constant(s), named constant(s), function(s) and variable(s) )

• Operator: a character or combination of characters that identifies a data operation, such as addition

Page 48: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

What is a Statement

• A statement is a source code construct that is roughly equivalent to a sentence in natural language (English). A statement forms a complete unit of execution

Often ends in a ;

May declare one or more variables,

May assign an expression's result to a variable,

May repeatedly execute other statements in a loop,

May control a loop,

May makes a decision, and so on.

Page 49: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

What is a Block

• A related collection of statements

• In C a block is enclosed within { }

Page 50: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

Assignment Statements

• Assignment statements store constants or the results of some computation to a variable

• Assignment statements use the assignment operator = (remember, this doesn’t mean “equal” … think “gets” instead). The following are examples of assignment operator use:

selection = 1; sum = 0;

sum = sum + 1; batting_avg = hits / at_bats;

selection = ‘N’;

• Assignment statements replace old values of a variable with new values

Page 51: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

The Return Statement

• When a return statement is executed, program control is immediately passed back to the calling environment (such as the operating system or another function).

• If an expression follows the keyword return, the value of the expression is returned to the calling environment as well.

• A return statement has one of the following two forms:

return;

return expression;

Page 52: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

The Return Statement

return;

return answer ; // Assuming answer is a variable

return first + second ; // Assuming first & second are variables

return ( a + b + c ); // Assuming a, b, and c are variables

return ( 6 + 4 / 2 ); // All the operand are constants

Page 53: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

Let's Work Another Example

Page 54: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

Nano/pico Shortcuts (one more time)

•while holding ctrl press w followed by t which produces a prompt that asks you on which line you wouyld like the cursor to be positioned

•pressing ctrl and c produces the number of the line on which the cursor is currently positioned

•pressing ctrl and y moves the cursor up one page

•pressing ctrl and v moves the cursor down one page

•pressing ctrl and k deletes an entire line

Page 55: CS 108 Computing Fundamentals Notes for Thursday September 10, 2015

GHP #4• See the class Web page

• Let’s discuss the template

• Consider using 2 Putty sessions simultaneously

One session is open with editor (nano or pico) and your source-code file

The second session is where you run gcc

The beauty of 2 simultaneous sessions is that your compiler error messages are available for you to use AS you edit your source-code file