Programming in C - PowerPoint PPT Presentation

About This Presentation
Title:

Programming in C

Description:

Programming in C Variables, Controls, Arrays, Functions Different Kinds of Languages Java is an object-oriented programming (OOP) language Problem solving centers on ... – PowerPoint PPT presentation

Number of Views:165
Avg rating:3.0/5.0
Slides: 40
Provided by: Denni137
Category:
Tags: java | programming | with

less

Transcript and Presenter's Notes

Title: Programming in C


1
Programming in C
  • Variables, Controls, Arrays, Functions

2
Different Kinds of Languages
  • Java 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 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

3
Libraries
  • Because 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.
  • Char/string functions (strcpy, strcmp)
  • Math functions (floor, ceil, sin)
  • Input/Output functions (printf, scanf)
  • On-line C/Unix manual -- the man command
  • Description of many C library functions and Unix
    commands
  • Usage man ltfunction namegt for C library
    functionsor man ltcommand namegt 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

4
The C Standard
  • The first standard for C was published by the
    American National Standards Institute (ANSI) in
    1989 and is widely referred to as ANSI C (or
    sometimes C89)
  • A slightly modified version of the ANSI C
    standard was adopted in 1990 and is referred to
    as C90. C89" and "C90" refer to essentially
    the same language.
  • In March 2000, ANSI adopted the ISO/IEC 98991999
    standard. This standard is commonly referred to
    as C99, and it is the current standard for the C
    programming language.
  • The C99 standard is not fully implemented in all
    versions of C compilers.

5
C99 on GL
  • The GNU C compiler on the GL systems (gcc version
    4.1.2) appears to support several useful C99
    features.
  • These notes include those C99 features supported
    by gcc on GL since our course use that compiler.
  • These features will be noted as C99 features when
    presented.

6
Hello World
  • This source code is in a file such as hello.c
  • / file header block comment
  • /
  • include ltstdio.hgt
  • int main( )
  • // print the greeing ( C99 )
  • printf( Hello World\n)
  • return 0

7
Compiling on Unix
  • Traditionally the name of the C compiler that
    comes with Unix is cc.
  • However, the UMBC GL systems use the GNU
    Compiler Collection named gcc for compiling C
    (and C) programs.
  • The default name of the executable program that
    is created by gcc is a.out
  • unixgt gcc hello.c

8
Compiler Options
  • -c
  • Compile only (create a .o file), dont link
    (create an executable)
  • gcc -c hello.c
  • -o filename
  • Name the executable filename instead of a.outgcc
    -o hello hello.c
  • -Wall
  • Report all warningsgcc -Wall hello.c
  • Use them together
  • gcc -Wall -o hello hello.c
  • Note the -ansi switch enforces the original ANSI
    C standard and disables C99 features.

9
Compiling and Running a C Program
unixgt gcc -Wall -o hello hello.c
printf.o
Pre- processor (cpp)
Compiler (cc1)
Assembler (as)
Linker (ld)
hello.i
hello.s
hello.o
hello
hello.c
Source program (text)
Modified source program (text)
Assembly program (text)
Relocatable object programs (binary)
Executable object program (binary)
Execute your program by typing the name of the
executableat the Unix prompt unixgt hello
10
Language Commonality
  • C and Java syntax have much in common
  • Some Data Types
  • Arithmetic operators
  • Logical Operators
  • Control structures
  • Other Operators
  • We assume that you are proficient in Java

11
Integral Data Types
  • C data types for storing integer values are
  • int (the basic integer data type)
  • short int (typically abbreviated just as short)
  • long int (typically abbreviated just as long)
  • long long int (C99)
  • char (C does not have byte)
  • int should be used unless theres a very good
    reason to use one of the others
  • char is stored in 1 byte
  • The number of bytes used by the other types
    depends on the machine being used

12
Integral Type Sizes
  • The C standard is specifically vague regarding
    the size of the integral types
  • A short int must not be larger than an int.
  • An int must not be larger than a long int.
  • A short int must be at least 16 bits long.
  • An int must be at least 16 bits long.
  • A long int must be at least 32 bits long.
  • A long long int must be at least 64 bits long.
  • The standard does not require that any of these
    sizes be necessarily different.

13
Integral Specifiers
  • Each of the integral types may be specified as
    either
  • signed (positive, negative, or zero)
  • unsigned (positive or zero only)
  • signed is the default qualifier
  • Much more on this later

14
Integral Variables
  • Each of the following is a valid variable
    declaration
  • int age 42
  • signed int age -33
  • long area 123456
  • short int height 4
  • unsigned char IQ 102
  • unsigned int length 8282
  • unsigned long int SATscore 800

15
Floating Point Data Types
  • C data types for storing floating point values
    (those with a decimal part) are
  • float, the smallest floating point type
  • double, a larger type with a larger range of
    values
  • long double, an even larger type with an even
    large range of values
  • double is typically used for all floating point
    values unless theres a compelling need to use
    one of the others
  • Floating point variables may store integer values

16
Size of Floating Point Type
  • A double variable can be marked as being a long
    double, which the compiler may use to select a
    larger floating point representation than a plain
    double.
  • The standard is unspecific on the relative sizes
    of the floating point values, and only requires a
    float not to be larger than a double, which
    should not be larger than a long double.

17
Floating Point Declarations
  • Each of the following is a valid floating point
    variable declaration
  • float avg 10.6
  • double median 88.54
  • double homeCost 10000

18
Character Data Types
  • C has just one data type for storing characters
  • char, which is just one byte
  • Because a char is just one byte, C only supports
    the ASCII character set (more on this later)

19
sizeof( )
  • Because the sizes (number of bits/bytes) of the C
    data types are vaguely specified, C provides the
    sizeof( ) operator to determine the size of any
    data type (in bytes).
  • sizeof( ) should be used everywhere the size of a
    data type is required so that your code is
    portable to other hardware on which the size of
    the data types may be different.
  • On GL,
  • sizeof( short ) 2
  • sizeof( int ) sizeof( long ) 4
  • sizeof (long long) 8
  • sizeof( float ) 4
  • sizeof( double ) 8

20
const Qualifier
  • Any of the variable types found above may be
    qualified as const.
  • const variables may not be modified by your code.
    Any attempt to do so will result in a compiler
    error.
  • Since they may not be modified, const variables
    must be initialized when declared
  • const double PI 3.1415
  • const int myAge 39

21
Variable Declaration
  • ANSI C requires that all variables be declared at
    the beginning of the block in which they are
    defined, before any executable line of code.
  • C99 allows variables to be declared anywhere in
    the code (like Java and C)
  • In any case, variables must be declared before
    they can be used.

22
Arithmetic Operators
  • Arithmetic operators are the same
  • is used for assignment
  • , -, (plus, minus)
  • , /, (times, divide, mod)
  • , -- (increment, decrement (pre and post))
  • Combinations are the same
  • , -, (plus equal, minus equal)
  • , /, (times equal, divide equal, mod
    equal)
  • Arithmetic Practice
  • Assignment Practice

23
Boolean Data Type
  • ANSI C has no Boolean type
  • The C99 standard supports the Boolean data type
  • To use bool, true, and false, your code must
    include ltstdbool.hgt
  • include ltstdbool.hgt
  • bool isRaining false
  • if ( isRaining )
  • printf( Bring your umbrella\n)

24
Type casting
  • C provides both implicit and explict type casting
  • Type casting is a means of temporarily treating
    one data type as if it were another
  • Int age 42
  • long longAge
  • char charAge
  • longAge (long) age
  • charAge age

25
Logical Operators
  • Logical operators are the same in C and Java and
    result in a Boolean value.
  • (and)
  • (or)
  • , ! (equal and not equal)
  • lt, lt (less than, less than or equal)
  • gt, gt (greater than, greater than or equal)
  • Integral types may also be treated as Boolean
    expressions
  • Zero is considered false
  • Any non-zero value is considered true
  • Boolean Logic Practice

26
Control Structures
  • Both languages support these control structures
    which function the same way in C and Java
  • for loops
  • But NOT -- for (int i 0 i lt size i)
  • while loops
  • do-while loops
  • switch statements
  • if and if-else statements
  • braces ( , ) are used to begin and end blocks
  • Loop Practice

27
Other Operators
  • These other operators are the same in C and Java
  • ? (tri-nary hook colon)
  • int larger (x gt y ? x y)
  • ltlt, gtgt, , , (bit operators)
  • ltlt, gtgt, , ,
  • (brackets for arrays)
  • ( ) parenthesis for functions and type casting
  • much more on these later

28
Arrays
  • Like most languages, C supports arrays as a basic
    data structure.
  • Array indexing starts with 0.
  • ANSI C requires that the size of the array be a
    constant
  • Declaring and initializing arrays
  • int grades44
  • int areas10 1, 2, 3
  • long widths12 0
  • int IQs 120, 121, 99, 154

29
Variable Size Arrays
  • C99 allows the size of an array to be a variable
  • int nrStudents 30
  • . . .
  • int gradesnrStudents

30
2-D Arrays
  • Like most languages, C supports multi-dimensional
    array
  • Subscripting is provided for each dimension
  • For 2-d arrays, the first dimension is the number
    of rows, the second is the number of columns
    in each row
  • int board 4 5 // 4 rows, 5 columns
  • int x board 0 0 // 1st row, 1st column
  • int y board 3 4 // 4th (last) row, 5th
    (last) column

31
defines
  • The define directive can be used to give names
    to important constants in your code. This makes
    your code more readable and more easily
    changeable.
  • The compilers preprocessor replaces every
    instance of the define name with the text that
    it represents.
  • Note that there is no terminating semi-colon
  • define MIN_AGE 21
  • ...
  • if (myAge gt MIN_AGE)
  • ...
  • define PI 3.1415
  • ...
  • double area PI radius radius
  • ...

32
define vs const
  • define
  • Pro no memory is used for the constant
  • Con cannot be seen when code is compiled since
    they are removed by the pre-compiler
  • Con are not real variables and have no type
  • const variables
  • Pro are real variables with a type
  • Pro can be examined by a debugger
  • Con take up memory

33
typedefs
  • C allows you to define new names for existing
    data types (NOT new data types)
  • This feature can be used to give
    application-specific names to simple types
  • typedef int Temperature
  • typedef int3 Row
  • Or to give simple names to complex types - more
    on this later
  • Using typedefs makes future changes easier and
    makes the code more relevant to the application

34
Enumeration Constants
  • C provides the enum as a list of named constant
    integer values (starting a 0 by default)
  • Behave like integers
  • Names in enum must be distinct
  • Often a better alternative to defines
  • Example
  • enum months JAN 1, FEB, MAR, APR, MAY, JUN,
    JUL, AUG, SEP, OCT, NOV, DEC
  • ...
  • enum months thisMonth
  • thisMonth SEP // preferred usage
  • thisMonth 42 // unfortunately, also ok

35
Functions vs. Methods
  • Java classes include methods which can be called
    from any code with appropriate access (recall
    public methods)
  • C functions are like Java methods, but they dont
    belong to any 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.
  • Like Java methods, C functions
  • Have a name
  • Have a return type
  • May have parameters
  • more on this later

36
More Functions
  • Before a function may be called, its prototype
    (aka signature -- name and parameters) must be
    known to the compiler so that it can verify that
    your code is calling the function correctly.
  • This is accomplished in one of two ways
  • Provide the entire function definition prior to
    the calling code
  • Provide the function prototype prior to the
    calling code and provide the function definition
    elsewhere
  • Unlike Java methods, a function in C is uniquely
    identified by its name. Therefore, there is no
    concept of method overloading in C as there is in
    Java. There can be only one main( ) function in
    a C application.
  • Our standards dictate that function names begin
    with and UPPERCASE letter

37
A Simple C Program
  • include ltstdio.hgt
  • typedef double Radius
  • define PI 3.1415
  • / given the radius, calculates the area of a
    circle /
  • double calcCircleArea( Radius radius )
  • return ( PI radius radius )
  • // given the radius, calcs the circumference of a
    circle
  • double calcCircumference( Radius radius )
  • return (2 PI radius )
  • int main( )
  • Radius radius 4.5

38
Alternate Sample
  • include ltstdio.hgt
  • typedef double Radius
  • define PI 3.1415
  • / function prototypes /
  • double calcCircleArea( Radius radius )
  • double calcCircleCircumference( Radius radius )
  • int main( )
  • Radius radius 4.5
  • double area calcCircleArea( radius )
  • double circumference calcCircleCircumference(
    radius )
  • // print the results
  • return 0
  • / given the radius, calculates the area of a
    circle /

39
Typical C Program
includes
include ltstdio.hgt typedef double
Radius define PI 3.1415 / function prototypes
/ double calcCircleArea( Radius radius ) double
calcCircleCircumference( Radius radius ) int
main( ) Radius radius 4.5 double
area calcCircleArea( radius ) double
circumference calcCircleCircumference( radius
) // print the results return 0 /
given the radius, calculates the area of a circle
/ double calcCircleArea( Radius radius )
return ( PI radius radius ) // given the
radius, calcs the circumference of a
circle double calcCircleCircumference( Radius
radius ) return (2 PI radius )
defines, typedefs, data type definitions, global
variable declarationsfunction prototypes
main()
function definitions
Write a Comment
User Comments (0)
About PowerShow.com