C OVERVIEW BASIC C PROGRAM STRUCTURE. C Overview. Basic C Program Structure

Similar documents
C OVERVIEW. C Overview. Goals speed portability allow access to features of the architecture speed

Introduction To C. Programming. Presented by: Jim Polzin. otto:

LESSON 1. A C program is constructed as a sequence of characters. Among the characters that can be used in a program are:

Fundamental Data Types. CSE 130: Introduction to Programming in C Stony Brook University

C: How to Program. Week /Mar/05

Character Set. The character set of C represents alphabet, digit or any symbol used to represent information. Digits 0, 1, 2, 3, 9

APPENDICES. Introduction to C Programming Page: A-1 Copyright 2017 by James J. Polzin All Rights Reserved Printed: 1/24/18

C Fundamentals & Formatted Input/Output. adopted from KNK C Programming : A Modern Approach

Chapter 2 - Introduction to C Programming

APPENDIX A : KEYWORDS... 2 APPENDIX B : OPERATORS... 3 APPENDIX C : OPERATOR PRECEDENCE... 4 APPENDIX D : ESCAPE SEQUENCES... 5

C Language Part 1 Digital Computer Concept and Practice Copyright 2012 by Jaejin Lee

ANSI C Programming Simple Programs

Work relative to other classes

Lecture 3. More About C

A complex expression to evaluate we need to reduce it to a series of simple expressions. E.g * 7 =>2+ 35 => 37. E.g.

DEPARTMENT OF MATHS, MJ COLLEGE

Lecture 02 C FUNDAMENTALS

UNIT - I. Introduction to C Programming. BY A. Vijay Bharath

Variables Data types Variable I/O. C introduction. Variables. Variables 1 / 14

Expressions and Data Types CSC 121 Spring 2015 Howard Rosenthal

Fundamental of Programming (C)

Introduction to C Programming. Chih-Wei Tang ( 唐之瑋 ) Department of Communication Engineering National Central University JhongLi, Taiwan

INTRODUCTION 1 AND REVIEW

Variables and literals

UNIT- 3 Introduction to C++

2/29/2016. Definition: Computer Program. A simple model of the computer. Example: Computer Program. Data types, variables, constants

Basics of Programming

Programming in C++ 4. The lexical basis of C++

CS113: Lecture 3. Topics: Variables. Data types. Arithmetic and Bitwise Operators. Order of Evaluation

Data types, variables, constants

C - Basic Introduction

DECLARATIONS. Character Set, Keywords, Identifiers, Constants, Variables. Designed by Parul Khurana, LIECA.

Engineering Computing I

Unit-II Programming and Problem Solving (BE1/4 CSE-2)

Features of C. Portable Procedural / Modular Structured Language Statically typed Middle level language

Introduction to the C Programming Language

6.096 Introduction to C++ January (IAP) 2009

Chapter 1 & 2 Introduction to C Language

Fundamentals of Programming

Expressions and Data Types CSC 121 Fall 2015 Howard Rosenthal

CprE 288 Introduction to Embedded Systems Exam 1 Review. 1

Data Types and Variables in C language

Fundamental of C programming. - Ompal Singh

Programming in C and Data Structures [15PCD13/23] 1. PROGRAMMING IN C AND DATA STRUCTURES [As per Choice Based Credit System (CBCS) scheme]

CSCI 2010 Principles of Computer Science. Data and Expressions 08/09/2013 CSCI

Programming Fundamentals (CS 302 ) Dr. Ihsan Ullah. Lecturer Department of Computer Science & IT University of Balochistan

Visual C# Instructor s Manual Table of Contents

Expressions and Precedence. Last updated 12/10/18

Chapter 2: Using Data

ME 172. Sourav Saha. Md. Mahamudul Hossain Kazi Fazle Rabbi Saddam Hossain Joy Kamruzzaman Lecturer,Dept. of ME,BUET

Programming for Engineers Introduction to C

Chapter 2. Lexical Elements & Operators

UNIT IV 2 MARKS. ( Word to PDF Converter - Unregistered ) FUNDAMENTALS OF COMPUTING & COMPUTER PROGRAMMING

University of Technology. Laser & Optoelectronics Engineering Department. C++ Lab.

Reserved Words and Identifiers

GO - OPERATORS. This tutorial will explain the arithmetic, relational, logical, bitwise, assignment and other operators one by one.

C/Java Syntax. January 13, Slides by Mark Hancock (adapted from notes by Craig Schock)

C/Java Syntax. Lecture 02 Summary. Keywords Variable Declarations Data Types Operators Statements. Functions. if, switch, while, do-while, for

CSC 1107: Structured Programming

A Fast Review of C Essentials Part I

Basic Elements of C. Staff Incharge: S.Sasirekha

Basic Types, Variables, Literals, Constants

Programming. C++ Basics

ET156 Introduction to C Programming

c++ keywords: ( all lowercase ) Note: cin and cout are NOT keywords.

Data and Expressions. Outline. Data and Expressions 12/18/2010. Let's explore some other fundamental programming concepts. Chapter 2 focuses on:

Lecture 02 Summary. C/Java Syntax 1/14/2009. Keywords Variable Declarations Data Types Operators Statements. Functions

PROGRAMMAZIONE I A.A. 2018/2019

Programming and Data Structures

9/5/2018. Overview. The C Programming Language. Transitioning to C from Python. Why C? Hello, world! Programming in C

Numerical Computing in C and C++ Jamie Griffin. Semester A 2017 Lecture 2

3. Java - Language Constructs I

VARIABLES AND CONSTANTS

Procedures, Parameters, Values and Variables. Steven R. Bagley

Overview of C. Basic Data Types Constants Variables Identifiers Keywords Basic I/O

.. Cal Poly CPE 101: Fundamentals of Computer Science I Alexander Dekhtyar..

The C Programming Language. (with material from Dr. Bin Ren, William & Mary Computer Science)

XC Specification. 1 Lexical Conventions. 1.1 Tokens. The specification given in this document describes version 1.0 of XC.

Unit 4. Input/Output Functions

Basic Types and Formatted I/O

Introduction to C Language

Review of the C Programming Language for Principles of Operating Systems

Full file at

TEXT FILE I/O. printf("this data will be written to the screen.\n"); printf("x = %d, y = %f\n", x, y);

Computers Programming Course 6. Iulian Năstac

BASIC ELEMENTS OF A COMPUTER PROGRAM

DETAILED SYLLABUS INTRODUCTION TO C LANGUAGE

CS102: Variables and Expressions

Basics of Java Programming

Introduction to C# Applications

Appendix. Grammar. A.1 Introduction. A.2 Keywords. There is no worse danger for a teacher than to teach words instead of things.

Objects and Types. COMS W1007 Introduction to Computer Science. Christopher Conway 29 May 2003

A Java program contains at least one class definition.

Tools : The Java Compiler. The Java Interpreter. The Java Debugger

CONTENTS: Compilation Data and Expressions COMP 202. More on Chapter 2

2. Numbers In, Numbers Out

Computers Programming Course 5. Iulian Năstac

A flow chart is a graphical or symbolic representation of a process.

B.V. Patel Institute of Business Management, Computer & Information Technology, Uka Tarsadia University

CSE 1001 Fundamentals of Software Development 1. Identifiers, Variables, and Data Types Dr. H. Crawford Fall 2018

Transcription:

C Overview Basic C Program Structure C OVERVIEW BASIC C PROGRAM STRUCTURE Goals The function main( )is found in every C program and is where every C program begins speed execution portability C uses braces to delimit the start/end of a function and to group sets of statements allow access to features of the architecture together into what C calls a block of code speed Semicolons are used to terminate each C statement Groups of instructions can be gathered together and named for ease of use and ease of C programming These modules are called functions in C fast executables allows high-level structure without losing access to machine features many popular languages such as C++, Java, Perl use C syntax/c as a basis generally a compiled language reasonably portable /* FILE: firstc printf("hello world! \n"); very available and popular /* OUTPUT: firstc Hello world! Introduction to C Programming Page: 4 Copyright 2017 by James J Polzin All Rights Reserved Introduction to C Programming Page: 5 Copyright 2017 by James J Polzin All Rights Reserved

Compiling and Linking Fundamental Data Types COMPILING AND LINKING FUNDAMENTAL DATA TYPES Producing an executable file from C source code involves a two step process, compiling and linking The compiler translates the C code into machine code, the linker combines the new machine code with code for existing routines from available libraries and adds some startup code The end result is a file full of machine instructions that are executable on the target machine there are three basic types of data, integer, floating-point, and character character data type is really a small integer signed and unsigned integer types available Type Size Min Max char 1 byte 0 / -128 255 / 127 short 2 bytes -32768 32767 int 2,4 bytes -2147483648 2147483647 long 4 bytes -2147483648 2147483647 long long 8 bytes -9x10 18 / 2 63 9x10 18 / 2 63-1 float 4 bytes ~ 7 digits +10x10-37 +34x10 +38 double 8 bytes ~ 14 digits +10x10-307 +18x10 +308 long double 12 bytes ~ 20 digits +10x10-4931 +10x10 +4932 /* FILE: unsignedc gcc firstc compile and link to aexe gcc -c firstc compile only, stop at object module gcc -lm firstc link in math libraries /* Illustration of the unsigned keyword Allows recovering the use of the lead bit for magnitude unsigned int x; x = 3333222111; printf("unsigned x = %u\n", x); printf("signed x = %d\n", x); /* OUTPUT: unsignedc Unsigned x = 3333222111 Signed x = -961745185 Introduction to C Programming Page: 6 Copyright 2017 by James J Polzin All Rights Reserved Introduction to C Programming Page: 7 Copyright 2017 by James J Polzin All Rights Reserved

Comments Identifiers COMMENTS IDENTIFIERS Block-style comments /* Everything between the opening /* and the first is a C identifiers must follow these rules: comment C is case sensitive Comment-to-end-of-line: // Everything from the // to the end of the line is a comment may consist of letters, digits, and the underscore Nesting of block-style comments doesn t work first character must be a letter, (could be underscore but this is discouraged) Note: Some older compilers may not recognize the // comment indicator no length limit but only the first 31-63 may be significant /* FILE: examplec /* C-style comments can span several lines where they are terminated by: printf("here's a program\n"); /* OUTPUT: examplec Here's a program Introduction to C Programming Page: 8 Copyright 2017 by James J Polzin All Rights Reserved Introduction to C Programming Page: 9 Copyright 2017 by James J Polzin All Rights Reserved

Keywords Basic Input and Output KEYWORDS auto enum restrict unsigned break extern return void case float short volatile char for signed while const goto sizeof _Bool continue if static _Complex default inline struct _Imaginary do int switch double long typedef else register union BASIC INPUT AND OUTPUT The basic I/O functions are printf( ) and scanf( ) printf( ) and scanf( ) are very generic They always are processing text on one end They get all their information about the data type they are to print or scan from the conversion specifiers printf( ) always is producing text output from any number of internal data formats, ie int, float, char, double The job of the conversion specifiers is to tell printf( ) how big a piece of data it's getting and how to interpret the internal representation scanf( ) always receives a text representation of some data and must produce an internal representation It is the conversion specifiers job to tell scanf( ) how to interpret the text and what internal representation to produce printf( ) tips and warnings: Make sure your conversion specifiers match your data values in number, type and order Use %f for both float and double Everything you put in the format string prints exactly as it appears, except conversion specifiers and escape sequences scanf( ) tips and warnings: Make sure your conversion specifiers match your data values in number, type and order As a general rule, scan only one value with each scanf( ) call, unless you really know what you are doing Use %f for float, %lf for double and %Lf for long double Don't forget the &, except with strings Someday you'll know why that is, and it will make sense For %c every character you type is a candidate, even <return> Placing a space in front of the %c in the format string will cause scanf( ) to skip whitespace characters scanf( ) is NOT without it's problems However, it provides an easy way to get text input into a program and has some very handy conversion capabilities Introduction to C Programming Page: 10 Copyright 2017 by James J Polzin All Rights Reserved Introduction to C Programming Page: 11 Copyright 2017 by James J Polzin All Rights Reserved

Conversion Specifiers Escape Sequences printf( ) CONVERSION SPECIFIERS ESCAPE SEQUENCES scanf( ) %d signed decimal int %hd signed short decimal integer %ld signed long decimal integer %lld signed long long decimal integer %u unsigned decimal int %lu unsigned long decimal int %llu unsigned long long decimal int %o unsigned octal int %x unsigned hexadecimal int with lowercase %X unsigned hexadecimal int with uppercase %f float or double [-]dddddddd %e float or double of the form [-]ddddd e[+/-]ddd %g either e or f form, whichever is shorter %E same as e; with E for exponent %G same as g; with E for exponent if e format used %Lf, %Le, %Lg long double %c single character %s string %p pointer %d signed decimal int %hd signed short decimal integer %ld signed long decimal integer %u unsigned decimal int %lu unsigned long decimal int %o unsigned octal int %x unsigned hexadecimal int %f float %lf double NOTE: double & float are distinct for scanf!!!! %LF long double %c single character %s string Certain characters are difficult to place in C code so an escape code or escape sequence is used to encode these characters These escape sequences all begin with a backslash \ and cause the encoded character to be placed into the program Escape value \n newline \t tab \f formfeed \a alarm \b backspace \r carriage return \v vertical tab /* FILE: printc /* Illustration of printf( ) and conversion specifiers int x = 12; float y = 375; printf("%d", x); printf("\nx = %d\n", x); printf("y = %f\n", y); /* OUTPUT: printc 12 x = 12 y = 3750000 Introduction to C Programming Page: 12 Copyright 2017 by James J Polzin All Rights Reserved Introduction to C Programming Page: 13 Copyright 2017 by James J Polzin All Rights Reserved

Operators Operator Precedence OPERATORS Arithmetic operators: multiplication/division/modulus addition/subtraction positive/negative sign (unary) increment/decrement (unary) Logical operators: AND OR NOT (unary) Relational operators: less than, less than or equal to, greater than, greater than or equal to equal to and not equal to Bit operators: left and right bit shift bitwise AND bitwise OR ^ bitwise exclusive or XOR bitwise NOT (unary) Assignment operators: ^ Address/Pointer operators: address of (unary) dereference (unary) Structure operators: structure member acccess member access thru a structure pointer Other operators: function call array access (type) type cast (unary) sizeof data object size in bytes (unary) conditional operator comma operator OPERATOR PRECEDENCE The C compiler determines the order of operations in a C statement by operator precedence Operator Precedence is the ranking of operators in C The higher the rank the sooner the operator is evaluated Parentheses can be used to override operator precedence There are many kinds of operators but all operators are ranked via operator precedence In the case of operators with the same rank, associativity is used and the operators are evaluated left-to-right or right-to-left Operator precedence and associativity are detailed in the Operator Precedence Chart in the appendix, on the following page, and on pg 53 in the K&R book Introduction to C Programming Page: 17 Copyright 2017 by James J Polzin All Rights Reserved Introduction to C Programming Page: 18 Copyright 2017 by James J Polzin All Rights Reserved

Operator Precedence Chart Arithmetic Operators OPERATOR PRECEDENCE CHART Operators Associativity ( ) [ ] > left to right ( ) function call! ~ ++ + * & (type) sizeof right to left All Unary * / % left to right + left to right << >> left to right < <= > >= left to right = =!= left to right & left to right ^ left to right left to right && left to right left to right?: right to left = += = *= /= %= &= ^= = <<= >>= right to left, left to right ARITHMETIC OPERATORS Arithmetic operators are the symbols used by C to indicate when an arithmetic operation is desired Arithmetic operators follow the same precedence rules we learned as kids Multiplication & division before addition and subtraction In case of a tie evaluate left-to-right Look at a precedence chart and see if this is true The modulus operator, %, is an additional arithmetic operator It produces the remainder of integer division and ranks at the same level as division in the precedence chart The increment, ++, and decrement, --, operators are basically a shorthand notation for increasing or decreasing the value of a variable by one /* FILE: arith_1c /* Arithmetic operators int first, second, sum; first = 11; second = 12; sum = first + second; printf("sum = %d\n", sum); sum = first - second; printf("sum = %d\n", sum); sum = first * second; printf("sum = %d\n", sum); sum = first / second; printf("sum = %d\n", sum); /* OUTPUT: arith_1c sum = 23 sum = -1 sum = 132 sum = 0 Introduction to C Programming Page: 19 Copyright 2017 by James J Polzin All Rights Reserved Introduction to C Programming Page: 20 Copyright 2017 by James J Polzin All Rights Reserved

Increment ++/Decrement -- Operators Strings INCREMENT ++/DECREMENT -- OPERATORS STRINGS C has two specialized operators for incrementing and decrementing the value of a variable The C definition of a string is: a set of characters terminated by a null character ++ - will increase a variables value by one A set of characters written inside of double quotes indicates to the compiler that it is a string -- - will decrease a variables value by one Placement of the null character gets handled by C itself, when C can identify that it is Both operators can be written in both prefix and postfix notation Each has implications as to working with strings when the actual increment or decrement takes place Fortunately the implications are A programmer can create and manipulate a string as a set of char locations This set of reasonable Prefix notation causes the increment/decrement to occur before the value of locations can be created as an array The programmer must then be sure that the set is used the variable is supplied to an expression Postfix notation causes the increment/decrement to properly so that the terminating null gets placed at the end of the characters so that it occur after the value of the variable is supplied to an expression In all cases the variables represents a legitimate string value is increased/decreased by one /* FILE: incdecc /* Example of increment & decrement, postfix and prefix int i =7; printf("i = %d\n", i++); printf("after postfix ++, i = %d\n", i); printf("i = %d\n", ++i); printf("after prefix ++, i = %d\n", i); printf("i = %d\n", i--); printf("after postfix --, i = %d\n", i); printf("i = %d\n", --i); printf("after prefix --, i = %d\n", i); /* OUTPUT: incdecc i = 7 After postfix ++, i = 8 i = 9 After prefix ++, i = 9 i = 9 After postfix --, i = 8 i = 7 After prefix --, i = 7 Introduction to C Programming Page: 31 Copyright 2017 by James J Polzin All Rights Reserved Introduction to C Programming Page: 32 Copyright 2017 by James J Polzin All Rights Reserved

Functions Logical, true/false Values FUNCTIONS LOGICAL, TRUE/FALSE VALUES C allows a block of code to be separated from the rest of the program and named The C definition of true and false is that 0 is false and any non-zero value is true These named blocks of code, or modules, are called functions This definition allows some unusual expressions to be used as test conditions Functions can be passed information thru a parameter list and can pass back a result thru a return value RELATIONAL OPERATORS Any number of parameters can be passed to a function but at most one return value can be produced All the C data types are candidates for parameter types and return types Ideally a function can be treated as a black-box If you know what to pass it and what it will return you don t need to know how it works C has a special keyword, void, that is used to explicitly state that there are no parameters or no return value Parameters Relational operators are used quite often to produce the logical value for a conditional statement operator function = = equality < less than > greater than <= less than or equal >= greater than or equal!= not equal LOGICAL OPERATORS Function Logical operators work on logical values, ie true and false Return value operator function && AND OR! NOT Introduction to C Programming Page: 40 Copyright 2017 by James J Polzin All Rights Reserved Introduction to C Programming Page: 49 Copyright 2017 by James J Polzin All Rights Reserved

Looping Math Libraries LOOPING MATH LIBRARIES C has three looping constructs, for, while, and do while C has a library of pre-defined mathematical functions The while loop is a fundamental pre-test condition loop that repeats as long as the test condition is true The for loop is just a specialized while loop that allows initialization and post-iteration processing to be specified adjacent to the test condition It is the most commonly used loop in C The do while is just a while loop with the test condition moved to the bottom of the loop It is a post-test condition loop so the test is executed after each iteration of the loop (The positioning of the test makes the timing clear) The main feature of the do while is that it will always execute the body of the loop at least once /* FILE: for_1c /* for loop example int i; for(i = 0; i < 10; i++) printf("i = %d\n", i); /* OUTPUT: for_1c i = 0 i = 1 i = 2 i = 3 i = 4 i = 5 i = 6 i = 7 i = 8 i = 9 /* FILE: math1c /* Program to compute the sine function for various values #include <mathh> double start, end, current, step, value; /* Set initial values start = 00; end = 2 * M_PI; step = 001; /* Loop to compute and display values for(current = start; current <= end; current += step) value = sin(current); printf("%f\n", value); /* OUTPUT: math1c 0000000 0010000 0019999 0029996 0039989 0049979 0059964 0069943 0079915 0089879 0099833 0021591 0011592 0001593-0008407 -0018406-0028404 -0038398-0048388 -0023183-0013185 -0003185 Introduction to C Programming Page: 50 Copyright 2017 by James J Polzin All Rights Reserved Introduction to C Programming Page: 56 Copyright 2017 by James J Polzin All Rights Reserved

Conditional Statements CONDITIONAL STATEMENTS C has two conditional statements and a conditional operator The basic conditional statement in C is the if An if is associated with a true/false condition Code is conditionally executed depending on whether the associated test evaluates to true or false The switch statement allows a labeled set of alternatives or cases to be selected from based on an integer value The conditional operator?: allows a conditional expression to be embedded in a larger statement /* FILE: ifc /* if examples int i; i = 5; if(i > 0) printf("%d > 0\n", i); i = -2; if(i > 0) printf("%d > 0\n", i); else printf("%d <= 0\n", i); i = -2; if(i > 0) printf("%d > 0\n", i); else if(i == 0) /* Test for equality is == printf("%d == 0\n", i); else printf("%d < 0\n", i); /* OUTPUT: ifc 5 > 0-2 <= 0-2 < 0 Introduction to C Programming Page: 59 Copyright 2017 by James J Polzin All Rights Reserved