
Programming Language: Syntax Syntax is the grammar of the language Analogous to rules in English Language ¾Missin g a peri od a fte r se nt en ce Introduction to C Language ¾Rules using verbs, nouns etc.. Overview, variables, Operators, Statements Most languages provide syntax check errors (Interprets/Compilers) ¾Syntax error messages may be helpful ¾Often, they are not ¾You gain experience with error messages after a while Based on slides © McGraw-Hill Additional material © 2004/2005 Lewis/Martin Modified by Diana Palsetia CIT 593 2 Programming Language Semantics C Programs are Compiled When the computer carries out your instructions (program) (text file containing Running or Executing a program hello.c C source code) Semantics is the meaning of the program We learn the semantics after we run or execute the program Basically we observe the output (text file containing After the executing program, the semantics of the program hello.s may or may be correct assembler source code) Semantic errors cause your answers to be wrong You may or may not get error messages hello ¾ E.g. Error Message – Dividing a number by zero (a.out) (binary executable file If your program is not doing what you want it to do, though it Containing machine code ) runs, the error is semantic We will use the GNU gcc compiler (v4.0 and higher) CIT 593 3 CIT 593 4 1 Syntax Compiling and Executing C programs Compilation Process C Entire mechanism is usually called the compiler Source and In the folder that contains the source code do for: Header Files Preprocessor Compiling the program Acts upon C preprocessor directives “Source-level” transformations C Preprocessor gcc –Wall progname.c ¾ Output is still C gcc tool for compiling process Compiler Compiler Source Code -Wall to display all warning Analysis Generates object (.o) file for each file Symbol Table progname.c is file that contains C code Target Code ¾ Machine instructions (binaries) Synthesis Will produce a file called a.out This file is not seen unless special compiler options are used Library Linker Executing Object Files Linker ./a.out Combine object files (including libraries) Executable into executable image Image CIT 593 5 CIT 593 6 Comments in C Basic C Elements Variables Begins with /* and ends with */ A data item upon which the programmer performs an operation A named space in memory Can span multiple lines E.g. z, counter Operators Predefined actions performed on data items Begins with // and ends with “end of line” E.g. *, +, /, ||, |, && Single-line comment Expressions ¾E.g. //This is a comment Operators combined with variables/literals to form expressions E.g. x * y Introduced in C++, later back-ported to C Statements Compiling with ansi standards, gives error A defined behavior Constitutes a unit of work for high-level language Ends with a semicolon. E.g. z = x * y; Why use comments ? Functions Help readers understand programs better Named group of statements Provides modularity to program Enforces, DRY principle (Do not Repeat Yourself) CIT 593 7 CIT 593 8 2 C program structure Variable Properties int main(){ Identifier: variable name /* code goes here Type: how data is interpreted, and how much space it */ needs return 0; Syntax:<type> <identifier> } Every C program must have the above format to develop Later we will discuss: application program(s) One of files must contain above structure Scope: is the region of the program in which the variable is ¾ main is a special function in C alive and accessible ¾ similar to Java’s main method Starting point for every program Storage: how C compiler allocates storage and whether or All C programs start and finish execution in the main not the variable loses its value when the section that Note: int main(int argc, char **argv) – main function can contains it has completed execution also take arguments like in Java CIT 593 9 CIT 593 10 Identifier: Variable Names Identifier Examples Any combination of letters, numbers, and Legal underscore (_) i wordsPerSecond same identifier words_per_ second Case sensitive _green "sum" is different than "Sum" aReally_longName_moreThan31chars aReally_longName_moreThan31characters Cannot begin with a number Usually, variables beginning with underscore Illegal are used only in special library routines 10sdigit ten'sdigit Only first 31 characters are definitely used done? reserved keyword Implementations can consider more characters if they like double CIT 593 11 CIT 593 12 3 Types Additional to Data Type C has several basic data types Literal int integer (at least 16 bits, commonly 32 bits) Values we write in a conventional form whose value is long integer (at least 32 bits) obvious float floating point (at least 32 bits) double floating point (commonly 64 bits) char character (at least 8 bits) Constant Exact size can vary, depending on processor Variable whose values do not change during the int is supposed to be "natural" integer size execution of the program ¾ 32 bits for most modern processors This is done by appending “const” before the type So how do I know the size? ¾ Use unary operator called sizeof. E.g. sizeof(int) – returns answer in bytes Symbol Signed vs. unsigned: Like constants but is preprocessor directive Default is 2’s complement signed integers Use “unsigned” keyword for unsigned numbers CIT 593 13 CIT 593 14 Literals C program showing Basic Syntax Integer #define RADIUS 15.0 123 /* decimal */ symbol -123 int main(){ 0x123 /* hexadecimal */ double area; double circum; DlDeclara tion a var ibliable (declaration statement) Floating point const double PI = 3.14159; 6.023 constant 6.023e23 /* 6.023 x 1023 */ literal 5E12 /* 5.0 x 1012 */ area = PI * RADIUS * RADIUS; Expression Character circum = 2 * PI * RADIUS; 'c' Statement '\n' /* newline */ return 0; Operators '\xA' /* ASCII 10 (0xA) */ } CIT 593 15 CIT 593 16 4 Symbol is C Preprocessor Directive Expression Symbol start with #define Expression Must go before the “main function syntax” Any combination of literals, variables, constants, operators, and function calls Every expression has a type, derived from the types Example: #define RADIUS 15.0 of its components (according to C typing rules) Before compiling, replace all instances of the string “RADIUS“ in the code with the string “15.0" Examples: Also known as a macro PI * RADIUS * RADIUS; Used for values that won't change during execution, but might change if the program is reused(Must x + sqrt(y) //sqrt is function with input y recompile) x % 6 == 0 CIT 593 17 CIT 593 18 Statement Operators Expresses a complete unit of work Three things to know about each operator Executed in sequential order (1) Function Simple statement ends with semicolon (note: “;” is not a What does it do? comme nt in C) (2) Precedence z = x * y; /* assign product to z */ In which order are operators combined? Example: y = y + 1; /* update y */ "a * b + c * d" is the same as "(a * b) + (c * d)" ; /* null statement */ because multiply (*) has a higher precedence than addition (+) sqrt(y); /* containing a function call*/ (3) Associativity Compound statement formed with braces In which order are operators of the same precedence combined? Syntactically equivalent to a simple statement Example: { z = x * y; y = y + 1; } "a - b - c" is the same as "(a - b) - c" because add/sub associate left-to-right CIT 593 19 CIT 593 20 5 Assignment Operator Assignment Operator (contd..) Changes the value of a variable All expressions evaluate to a value x = x + 4; Even ones with the assignment operator e.g. y = x = 3 For assignment, the result is the value assigned 1. Evaluate right-hand side. Usually (but not always) the value of the right-hand 2. Set value of left-hand side variable to result. side ¾Type conversion might make assigned value different than computed value e.g. int x = 15.6/3 = 5 Assigggnment associates right to left y = x = 3; y gets the value 3, because (x = 3) evaluates to the value 3 y = (x = 3); CIT 593 21 CIT 593 22 Arithmetic Operators Arithmetic Expressions If mixed types, smaller type is "promoted" to larger Symbol Operation Usage Precedence Assoc Example: x + 4.3 * multiply x * y 6l-to-r if x is int, converted to double and result is double divide 6l-to-r / x / y Integer division -- fraction is dropped % modulo x % y 6l-to-r Example: x / 3 + addition x + y 7l-to-r if x is int and x=5, result is 1 (not 1.666666...) - subtraction x - y 7l-to-r Storing mixed type expression values int x = 45/7.1; All associate left to right C compiler will do automatic down grade if storage is small. Java compiler will complain have higher precedence than * /%/ % + - Thus C has less type sa fe ty fea tures compare d to Java Example 2 + 3 * 4 vs. (2 + 3) * 4 Modulo -- result is remainder Example: x % 3 2 * 4 % 5 if x is int and x=5, result is 2 CIT 593 23 CIT 593 24 6 Relational Operators AND, OR, NOT Symbol Operation Usage Precedence Assoc Two states: TRUE=1, FALSE=0 > greater than x > y 9l-to-r >= greater than or equal x >= y 9l-to-r A B A AND B A B A OR B A NOT A < less than x < y 9l-to-r 0 0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 <= less than or equal x <= y 9l-to-r 1 0 0 1 0 1 == equal x == y 10 l-to-r 1 1 1 1 1 1 != not equal x != y 10 l-to-r View n-bit number as a collection of n logical values Result is non-zero (TRUE) or zero (FALSE) Operation applied to each bit independently (bitwise operators) No boolean data type in C ¾Applications e.g.
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages10 Page
-
File Size-