Top Banner
Programming in C Variables, Controls, Functions Variables, Controls, Functions
32

Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages Java is an object-oriented programming (OOP) language Problem.

Jan 18, 2018

Download

Documents

Justin Lee

7/28/09 Libraries Because Java is an OOP language, its libraries consist of predefined classes that you can use in your applicationsBecause Java is an OOP language, its libraries consist of predefined classes that you can use in your applications –ArrayList, Scanner, Color, Integer Because C is a procedural language, its library consists of predefined functions.Because C is a procedural language, its library consists of predefined functions. –Char/string functions (strcpy, strcmp) –Math functions (floor, ceil, sin) –Input/Output functions (printf, scanf) On-line C/Unix manual -- the “man” commandOn-line C/Unix manual -- the “man” command –Description of many C library functions and Unix commands –Usage: man for C library functions or man for Unix commands man printf man dir –Search for applicable man pages using the “apropos” command or “man -k” –Learn to use the man command using “man man”
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

Programming in C

Variables, Controls, FunctionsVariables, Controls, Functions

Page 2: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

7/28/09

Different Kinds of Languages

Java is an object-oriented programming (OOP) languageJava is an object-oriented programming (OOP) language Problem solving centers on defining classes that model “things” like

Trucks, Persons, Marbles, Strings, and CandyMachine Classes encapsulate data (instance variables) and code (methods)

C is a procedural languageC is a procedural language Problem solving centers on defining functions that perform a single

service like getValidInt( ), search( ) and inputPersonData( ). Data is global or passed to functions as parameters No classes

Page 3: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

7/28/09

Libraries• Because Java is an OOP language, its libraries consist of Because Java is an OOP language, its libraries consist of

predefined classes that you can use in your applicationspredefined classes that you can use in your applications– ArrayList, Scanner, Color, Integer

• Because C is a procedural language, its library consists of Because C is a procedural language, its library consists of predefined functions.predefined functions.– Char/string functions (strcpy, strcmp)– Math functions (floor, ceil, sin)– Input/Output functions (printf, scanf)

• On-line C/Unix manual -- the “man” commandOn-line C/Unix manual -- the “man” command– Description of many C library functions and Unix commands– Usage: man <function name> for C library functions

or man <command name> for Unix commands• man printf• man dir

– Search for applicable man pages using the “apropos” command or “man -k”

– Learn to use the man command using “man man”

Page 4: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

7/28/09

Hello WorldIn JAVA -- Hello.java is in a classIn JAVA -- Hello.java is in a classpackage hello;package hello;public class Hellopublic class Hello{{

public static void main( String[ ] args )public static void main( String[ ] args ){{

System.out.println( “Hello World” );System.out.println( “Hello World” );}}

}}

In C -- Hello.c stands aloneIn C -- Hello.c stands alone#include <stdio.h>#include <stdio.h>int main( ) int main( ) {{

printf( “Hello World\n” );printf( “Hello World\n” );return 0;return 0;

}}

Page 5: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

7/28/09

Compiling and Runninga Java Program

JavaCode

JavaBytecode

JRE for Linux

JRE for Windows

Java compiler

Hello.java

javac Hello.java

Hello.class

java Hello

java Hello

Java interpreter translates bytecode to machine code in JRE

unix> javac -d . *.java

unix> java hello.Hello

Page 6: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

7/28/09

Compiling and Running a C Program

Pre-processor

(cpp)

hello.i Compiler(cc1)

hello.s Assembler(as)

hello.o Linker(ld)

hellohello.c

Sourceprogram(text)

Modifiedsourceprogram(text)

Assemblyprogram(text)

Relocatableobject

programs(binary)

Executableobjectprogram(binary)

printf.o

unix> gcc -o hello hello.c

unix> hello

Page 7: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

7/28/09

Language Commonality

• C and Java syntax have much in commonC and Java syntax have much in common– Some Data Types– Arithmetic operators– Logical Operators – Control structures– Other Operators

Page 8: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

1/13/10

Data Types• Both languages support the integral types Both languages support the integral types intint, , shortshort, , longlong..

• Both languages support the floating point typesBoth languages support the floating point types doubledouble andand floatfloat

• Both languages support the character data typeBoth languages support the character data type charchar• Both languages support enumerations - Both languages support enumerations - enumenum• C allows the C allows the signed signed (default) and(default) and unsigned unsigned qualifiers qualifiers

for integral types (for integral types (char, int, short, long)char, int, short, long)• C does C does NOTNOT support support bytebyte (use (use charchar instead) instead)• Both languages support arrays using [ ] and indexing Both languages support arrays using [ ] and indexing

starting with zero (0).starting with zero (0).

Page 9: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

1/13/10

True and False• Java supports the Java supports the boolbool data type and the keywords data type and the keywords true and and

falsebool isRed = true;bool isLarge = false;

• C does not support the C does not support the bool data type. Integer variables and data type. Integer variables and expressions are used as insteadexpressions are used as instead– Any non-zero value is considered “true”– A zero integer value is considered “false”

int isRed = 55; /* “true” */int isLarge = 0; /* “false” */

Page 10: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

7/28/09

Arithmetic Operators

Arithmetic operators are the sameArithmetic operators are the same= is used for assignment+, -, (plus, minus)*, /, % (times, divide, mod)++, -- (increment, decrement (pre and post))

Combinations are the sameCombinations are the same+=, -=, (plus equal, minus equal) *=, /=, %= (times equal, divide equal, mod equal)

Arithmetic PracticeArithmetic Practice Assignment PracticeAssignment Practice

Page 11: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

7/28/09

Logical Operators

Logical operators are the same in C and Java and Logical operators are the same in C and Java and result in a Boolean value.result in a Boolean value. && (and) || (or) ==, != (equal and not equal) <, <= (less than, less than or equal) >, >= (greater than, greater than or equal)

Boolean Logic PracticeBoolean Logic Practice

Page 12: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

7/28/09

Control Structures

Both languages support these control structures Both languages support these control structures which function the same way in C and Javawhich function the same way in C and Java for loops

But NOT -- for (int i = 0; i < size; i++) while loops do-while loops switch statements if and if-else statements braces ( {, } ) are used to begin and end blocks

Loop PracticeLoop Practice

Page 13: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

7/28/09

Other OperatorsThese other operators are the same in C and JavaThese other operators are the same in C and Java

?: (tri-nary “hook colon”)int larger = (x : y ? x : y);

<<, >>, &, |, ^ (bit operators*) <<=, >>=, &=, |=,^= [ ] (brackets for arrays) ( ) parenthesis for functions and type casting

*much more on these later

Page 14: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

1/13/10

#defines• The The #define directive can be used to give names to directive can be used to give names to

important constants in your code. This makes your code important constants in your code. This makes your code more readable and more easily changeable.more readable and more easily changeable.

• The compiler replaces every instance of the The compiler replaces every instance of the #define name name with the text that it represents. with the text that it represents.

• Note that there is no terminating semi-colonNote that there is no terminating semi-colon

#define MIN_AGE 21#define MIN_AGE 21......

if (myAge > MIN_AGE)if (myAge > MIN_AGE)......

#define HELP “There is no hope”#define HELP “There is no hope”......printf( “%s\n”, HELP);printf( “%s\n”, HELP);......

Page 15: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

1/13/10

typedefs• C allows you to define new names for existing C allows you to define new names for existing

data types (NOT new data types)data types (NOT new data types)• This feature can be used to give application-This feature can be used to give application-

specific names to simple typesspecific names to simple typestypedef int Temperature;typedef long Width;

• Or to give simple names to complex typesOr to give simple names to complex types - more on this later - more on this later

• Using Using typedefs makes future changes easier and s makes future changes easier and makes the code more relevant to the applicationmakes the code more relevant to the application

Page 16: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

7/28/09

Enumeration Constants

• C provides the C provides the enum as a list of named constant as a list of named constant integer values (starting a 0 by default)integer values (starting a 0 by default)

• Names in Names in enums must be distincts must be distinct• Often a better alternative to Often a better alternative to #defines• ExampleExample

enum boolean { FALSE, TRUE };enum months { JAN = 1, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC };

Page 17: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

1/13/10

Miscellaneous• CommentsComments

– Both languages support block comments surrounded by /* and */

– C DOES NOT support // comment style*• Declaring variablesDeclaring variables

– All variables must be declared at the beginning of the “block” in which they are used

• TypecastingTypecasting– Both languages allow typecasting - temporarily treating

a variable as a different type• temp = (double) degrees / 4;

• Ask me about C99Ask me about C99

Page 18: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

7/28/09

Functions vs. Methods• Java classes include methods which can be called from any code Java classes include methods which can be called from any code

with appropriate access (recall with appropriate access (recall publicpublic methods) methods)

• C functions are like Java methods, but they don’t belong to any C functions are like Java methods, but they don’t belong to any class. Functions are defined in a file and may be either global to class. Functions are defined in a file and may be either global to your program or local to the file in which they are defined*.your program or local to the file in which they are defined*.

• Like Java methods, C functions Like Java methods, C functions – Have a name– Have a return type– May have parameters– Pass arguments “by value”

• Unlike Java methods, a function in C is uniquely identified by its Unlike Java methods, a function in C is uniquely identified by its name. Therefore, there is no concept of method overloading in C name. Therefore, there is no concept of method overloading in C as there is in Java. There can be only one as there is in Java. There can be only one main( ) function in a C function in a C application.application.

*more on this later*more on this later

Page 19: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

7/28/09

C Function Examples/* returns the average of two integer parameters *//* returns the average of two integer parameters */int intAverage( int a, int b )int intAverage( int a, int b ){{

return ( (a + b) / 2 );return ( (a + b) / 2 );}}

/* Simulates dog barking *//* Simulates dog barking */void bark (int nrTimes)void bark (int nrTimes){{

int n;int n;for (n = 0; n < nrTimes; n++)for (n = 0; n < nrTimes; n++)

printf(“Arf!\n”);printf(“Arf!\n”);}}

Page 20: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

7/28/09

Function Prototypes• A function prototype defines the function’s name, A function prototype defines the function’s name,

return type, and parameters.return type, and parameters.• For example from the previous slideFor example from the previous slide

void bark( int n ); int average( int a, int b );

• Before a function may be called, you must provide Before a function may be called, you must provide its prototype (its prototype (or the function definition itselfor the function definition itself) so ) so that the C compiler can verify the function is being that the C compiler can verify the function is being called correctly.called correctly.

(note the semi-colon).

Page 21: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

7/28/09

Recursion• C functions may be called recursively.C functions may be called recursively.

– Typically a function calls itself• A properly written recursive function has the A properly written recursive function has the

following propertiesfollowing properties– A “base case” - a condition which does NOT make a

recursive call because a simple solution exists– A recursive call with a condition (usually a parameter

value) that is closer to the base case than the condition (parameter value) of the current function call

• Each invocation of the function gets its own set Each invocation of the function gets its own set of arguments and local variablesof arguments and local variables

Page 22: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

7/28/09

Recursion Example/* print an integer in decimal** K & R page 87 (may fail on largest negative int) */

#include <stdio.h>void printd( int n ){

if ( n < 0 ){

printf( “-” );n = -n;

}if ( n / 10 ) /* (n / 10 != 0) -- more than 1 digit */

printd( n / 10 ); /* recursive call: n has 1 less digit */

printf( “%c”, n % 10 + ‘0’); /* base case --- 1 digit */}

Page 23: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

7/28/09

A Simple C Program/* convertTemps.c */#include <stdio.h> /* includes prototype for printf, etc */typedef double Temperature;

/* prototype for CtoF */Temperature CtoF( Temperature degreesCelsius);

int main( ){

int temp;for (temp = 0; temp < 100; temp += 20)printf(“%2d degrees F = %5.2f degrees C\n”,temp, CtoF( temp ));return 0;

}

/* converts temperature in Celsius to Fahrenheit */Temperature CtoF(Temperature celsius) {

Temperature fahrenheit; fahrenheit = 9.0 / 5.0 * celsius + 32;return fahrenheit;

}

Page 24: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

7/28/09

Typical C Programincludes #include <stdio.h>

typedef double Temperature;Temperature CtoF( Temperature celcius);

int main( ){ int temp; for (temp = 0; temp < 100; temp += 20) printf(“%2d degrees F = %5.2f degrees C\n”,

temp, CtoF( temp )); return 0;}

/* converts temperature in Celsius to Fahrenheit */Temperature CtoF(Temperature celsius) { Temperature fahrenheit; fahrenheit = 9.0 / 5.0 * celsius + 32; return fahrenheit;}

defines, typedefs, data type definitions, global variable declarationsfunction prototypes

function definitions

main()

Page 25: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

7/28/09

Compiling on Unix

Traditionally the name of the C compiler that comes Traditionally the name of the C compiler that comes with Unix is “with Unix is “cccc”.”.

On the UMBC GL systems, use the GNU compiler On the UMBC GL systems, use the GNU compiler named “named “gcc”.”.

The default name of the executable program that is The default name of the executable program that is created is created is a.out

unix> unix> gcc convertTemps.c

Page 26: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

1/13/10

Compiler Options• -c-c

– Compile only (create a .o file), don’t link (create an executable)gcc -c convertTemps.c

• -o filename-o filename– Name the executable “filename” instead of a.out

gcc -o project1 convertTemps.cgcc -o project1 convertTemps.c• -Wall-Wall

– Report all warningsgcc -Wall convertTemps.cgcc -Wall convertTemps.c

• -ansi-ansi– Force adherence to the C ANSI standards

gcc -ansi convertTempsgcc -ansi convertTemps• Use them togetherUse them together

gcc -ansi -Wall -o project1 convertTemps.cgcc -ansi -Wall -o project1 convertTemps.c

Page 27: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

7/28/09

Header Files• When a file contains functions to be reused in several When a file contains functions to be reused in several

programs, their prototypes and important programs, their prototypes and important #defines are are usually placed into a header ( usually placed into a header ( .h ) that is then #included ) that is then #included where needed.where needed.

• Each Each .h file should be “stand alone”. That is, it should and file should be “stand alone”. That is, it should and ##defines needed by the prototypes and s needed by the prototypes and #include any any .h files it needs to avoid compiler errors.files it needs to avoid compiler errors.

• In this example, the prototype for In this example, the prototype for CtoF() would be placed would be placed into the file into the file CtoF.h which would then be #included in which would then be #included in convertTemps.c or any other convertTemps.c or any other .c file that used file that used CtoF( )

• The code for The code for CtoF( ) would be placed int would be placed int CtoF.c

Page 28: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

7/28/09

CtoF.h

/* CtoF.h */

/* #includes needed by prototypes *//* relevant #defines *//* relevant typedefs */typedef double Temperature;

/* prototype for functions defined in CtoF.c */Temperature CtoF( Temperature celsius );

Page 29: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

7/28/09

CtoF.c

/* CtoF.c */

/* necessary #includes, #defines */#include “CtoF.h”

/* converts temp in Celsius to Fahrenheit */Temperature CtoF(Temperature celsius) {

Temperature fahrenheit; fahrenheit = 9.0 / 5.0 * celsius + 32;return fahrenheit;

}

Page 30: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

7/28/09

convertTemps.c revisited#include <stdio.h> /* note angle brackets */#include “CtoF.h” /* note quotes

*/

int main( ){

int temp;for (temp = 0; temp < 100; temp += 20)

printf(“%2d degrees F = %5.2f degrees C\n”,

temp, CtoF( temp ));return 0;

}

Page 31: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

1/20/10

Compiling and linking• When a program’s code is separated into multiple When a program’s code is separated into multiple .c files, we must compile each files, we must compile each .c file and then file and then combine the resulting combine the resulting .o files to create an files to create an executable program.executable program.

• The files may be compiled separately and then linked The files may be compiled separately and then linked together. The together. The -c flag in the first two command tells flag in the first two command tells gcc to to “compile only” which results in the creation of “compile only” which results in the creation of .o (object) (object) files. In the 3files. In the 3rdrd command, the presence of command, the presence of .o extension extension tells gcc to link the files into an executabletells gcc to link the files into an executable

gcc -c -Wall -ansi convertTemps.cgcc -c -Wall -ansi CtoF.cgcc -Wall -ansi -o myProgram convertTemps.o CtoF.o

• Or it can be done all in one stepOr it can be done all in one step– gcc -Wall -ansi -o myProgram convertTemps.c CtoF.c

Page 32: Programming in C Variables, Controls, Functions. 7/28/09 Different Kinds of Languages  Java is an object-oriented programming (OOP) language  Problem.

7/28/09

Java/C Project example

• Number Theory - a problem about integersNumber Theory - a problem about integers• http://www.cs.umbc.edu/courses/undergradaute/3http://www.cs.umbc.edu/courses/undergradaute/3

13/fall09/code/numbertheory.txt13/fall09/code/numbertheory.txt