Chap. 2. Types, Operators, and Expressions

Slides:



Advertisements
Similar presentations
IntroductionIntroduction  Computer program: an ordered sequence of statements whose objective is to accomplish a task.  Programming: process of planning.
Advertisements

More on Numerical Computation CS-2301 B-term More on Numerical Computation CS-2301, System Programming for Non-majors (Slides include materials from.
C expressions (Reek, Ch. 5) 1CS 3090: Safety Critical Programming in C.
0 Chap. 2. Types, Operators, and Expressions 2.1Variable Names 2.2Data Types and Sizes 2.3Constants 2.4Declarations Imperative Programming, B. Hirsbrunner,
The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL Adrian Ilie COMP 14 Introduction to Programming Adrian Ilie June 27, 2005.
Primitive Types Java supports two kinds of types of values – objects, and – values of primitive data types variables store – either references to objects.
More about Numerical Computation CS-2301, B-Term More about Numerical Computation CS-2301, System Programming for Non-Majors (Slides include materials.
A bit can have one of two values: 0 or 1. The C language provides four operators that can be used to perform bitwise operations on the individual bits.
0 Chap. 2. Types, Operators, and Expressions 2.1Variable Names 2.2Data Types and Sizes 2.3Constants 2.4Declarations System-oriented Programming, B. Hirsbrunner,
1 Chapter Two Using Data. 2 Objectives Learn about variable types and how to declare variables Learn how to display variable values Learn about the integral.
Types, Operators and Expressions CSE 2031 Fall /5/2015 3:59 PM.
Java Primitives The Smallest Building Blocks of the Language (corresponds with Chapter 2)
2440: 211 Interactive Web Programming Expressions & Operators.
Numeric Types, Expressions, and Output ROBERT REAVES.
Chapter 3 Processing and Interactive Input. 2 Assignment  The general syntax for an assignment statement is variable = operand; The operand to the right.
Chapter 2: Using Data.
Java Software Solutions Lewis and Loftus Chapter 5 1 Copyright 1997 by John Lewis and William Loftus. All rights reserved. More Programming Constructs.
Introduction to C Programming Chapter 2 : Data Input, Processing and Output.
Computer Engineering 1 st Semester Dr. Rabie A. Ramadan 3.
VARIABLES, CONSTANTS, OPERATORS ANS EXPRESSION
PHY-102 SAPVariables and OperatorsSlide 1 Variables and Operators In this section we will learn how about variables in Java and basic operations one can.
 All C programs are made up of functions that perform operations on variables.  In this lecture we examine variables  Variables are the basic building.
Programming in Java (COP 2250) Lecture 4 Chengyong Yang Fall, 2005.
Module B - Computation1/61 Module-B-Computation Variables Basic Memory Operations Expressions.
CSM-Java Programming-I Spring,2005 Fundamental Data Types Lesson - 2.
Tokens in C  Keywords  These are reserved words of the C language. For example int, float, if, else, for, while etc.  Identifiers  An Identifier is.
0 Chap.2. Types, Operators, and Expressions 2.1Variable Names 2.2Data Types and Sizes 2.3Constants 2.4Declarations 2.5Arithmetic Operators 2.6Relational.
ECE 103 Engineering Programming Chapter 4 Operators Herbert G. Mayer, PSU CS Status 6/19/2015 Initial content copied verbatim from ECE 103 material developed.
1 Chapter 3 – Operators and Expressions Outline 3.1Introduction 3.2Arithmetic operators 3.3Relational operators 3.4Logical operators 3.5Assignment operators.
Lecture 3: More Java Basics Michael Hsu CSULA. Recall From Lecture Two  Write a basic program in Java  The process of writing, compiling, and running.
ECE 103 Engineering Programming Chapter 4 Operators Herbert G. Mayer, PSU Status 6/10/2016 Initial content copied verbatim from ECE 103 material developed.
CompSci 230 S Programming Techniques
CSE 220 – C Programming Expressions.
The Machine Model Memory
Chapter 7: Expressions and Assignment Statements
Data types Data types Basic types
University of Central Florida COP 3330 Object Oriented Programming
2.0 FUNDAMENTALS OF JAVA PROGRAMMING LANGUAGE
Tokens in C Keywords Identifiers Constants
ITEC113 Algorithms and Programming Techniques
University of Central Florida COP 3330 Object Oriented Programming
Data Types, Identifiers, and Expressions
Chapter 7: Expressions and Assignment Statements
Expressions An expression is a portion of a C++ statement that performs an evaluation of some kind Generally requires that a computation or data manipulation.
Multiple variables can be created in one declaration
Java Programming: From Problem Analysis to Program Design, 4e
Chapter 2: Introduction to C++
Operators and Expressions
Character Set The character set of C represents alphabet, digit or any symbol used to represent information. Types Character Set Uppercase Alphabets A,
Types, Operators and Expressions
More about Numerical Computation
Basics of ‘C’.
Chapter 2: Basic Elements of Java
Introduction to C Programming
C Operators, Operands, Expressions & Statements
Chapter-3 Operators.
Lectures on Numerical Methods
Associativity and Prescedence
Homework Homework Continue Reading K&R Chapter 2 Questions?
elementary programming
Chapter 3 Operators and Expressions
2. Second Step for Learning C++ Programming • Data Type • Char • Float
Homework Finishing Chapter 2 of K&R. We will go through Chapter 3 very quickly. Not a lot is new. Questions?
Module 2 Variables, Data Types and Arithmetic
OPERATORS AND EXPRESSIONS IN C++
ENERGY 211 / CME 211 Lecture 5 October 1, 2008.
OPERATORS in C Programming
Operator King Saud University
OPERATORS in C Programming
ECE 120 Midterm 1 HKN Review Session.
Presentation transcript:

Chap. 2. Types, Operators, and Expressions Programmation impérative - Prof. Béat Hirsbrunner été 2002 Chap. 2. Types, Operators, and Expressions 2.1 Variable Names 2.2 Data Types and Sizes 2.3 Constants 2.4 Declarations 2.5 Arithmetic Operators 2.6 Relational and Logical Operators 2.7 Type Conversations 2.8 Increment and Decrement Operators 2.9 Bitwise Operators 2.10 Assignment Operators and Expressions 2.11 Conditional Expressions 2.12 Precedence and Order of Evaluation Imperative Programming, B. Hirsbrunner, diuf.unifr.ch/pai/ip Session 3, 4 March 2008

Programmation impérative - Prof. Béat Hirsbrunner 2.1 Variable Names Names are made of letters and digits, but : the first character must be a letter the underscore “_” counts as a letter (useful for improving readability) don’t begin variable names with underscore (since library routines often use such names) Case sensitivity Upper and lower case are distinct, so x and X are two different names Traditional C pratice is to use : lower case for variable names upper case for symbolic constants Miscellaneous At least the first 31 characters of an internal name are significant (!!!) For external names, the standard guarantees uniqueness only for 6 characters (!!!) Keywords like int, float, if, else, etc., are reserved: you can’t use them as variable names

Programmation impérative - Prof. Béat Hirsbrunner 2.2 Data Types and Sizes Basic data types char, int, float, double Qualifiers short int, long int short is often 16 bits, long 32 bits, and int either 16 or 32 bits signed, unsigned : apply to char and any integer if chars are 8 bits, unsigned chars have values between 0 and 255, while signed chars between -128 and 127 (in a two’s complement machine) long double Standard Header Files (see [KR88], p.257) <limits.h> defines constants for the sizes of integral types Examples: INT_MIN, INT_MAX, LONG_MAX, LONG_MIN <float.h> defines constants related to floating-point arithmetic

Programmation impérative - Prof. Béat Hirsbrunner Signed integer (1/3) 1 2 3 000 100 001 101 110 111 010 011 -0 -1 -2 -3 Signed magnitude The leftmost bit is the sign bit 1 2 3 000 100 001 101 110 111 010 011 -3 -2 -1 -0 One’s complement To negate a number, replace each 1 by 0 and each 0 by 1

Programmation impérative - Prof. Béat Hirsbrunner Signed integer (2/3) 000 100 001 101 110 111 010 011 -1 1 -2 2 -3 3 -4 Two’s complement First step: as one’s complement Second step: add one to the result

Programmation impérative - Prof. Béat Hirsbrunner Signed integer (3/3) 000 111 001 -4 -3 -2 -1 3 2 1 110 010 101 011 100 Excess 2m-1 (here m=3) a number is stored as its true value plus 2m-1

Programmation impérative - Prof. Béat Hirsbrunner 2.3 Constants 1234 : integer constant 123456789L : long constant 1234U : unsigned constant 123456789UL : unsigned long Complete set of escape sequences: \a \b \f \n \r \t \v \\ \? \’ \” \ooo \xhh “I am a string” : string constant “hello ” “world” : string concatenation (a string constant is a array of characters, with a null character ‘\0’ at the end; ‘\0’ represents the character with value zero) Be careful : ‘x’ is a character constant and “x” is string constant 01234 : octal (with a leading zero) 0X1234 : hexadecimal ‘x’ : character constant (The value of ‘x’ is the numeric value of x in the machine’s character set) ‘\ooo’ : ooo is one to three octal digits (0 .. 7) ‘\xhh’ : hh is 1 or 2 hexadecimal digits (0 .. 9, a .. f, A .. F) Enumeration constant : enum boolean { NO, YES } enum escape { BELL = ‘\a’, TAB = ‘\t }

Programmation impérative - Prof. Béat Hirsbrunner 2.4 Declarations All variables must be declared before use A declaration specifies a type, and contains a list of one or more variables of that type, as in : int lower, upper, step; char c, line[1000]; A variable may be initialized in its declaration, as in : char esc = ‘\\’; int i = 0, limit = MAXLINE + 1; float eps = 1.0e-5; External and static variables are intialized to zero by default Automatic variables for which there is no explicit initializer have undefined (garbage) values. const qualifier can be applied to the declaration of any variable to specify that its value will not be changed const double e = 2.71828182845905; const char msg[] = “warning: “; int strlen(const char[]);

Programmation impérative - Prof. Béat Hirsbrunner 2.5 Arithmetic Operators +, -, *, /, % The integer division / truncates any fractional part The expression x % y, which reads “x modulus y”, produces the remainder when x is divided by y Machine dependance for negative operands The direction of truncation for / The sign of the result for % The action taken on overflow or underflow Precedence rules The binary + and - operators have the same precedence, which is lower than the precedence of *, /, and %, which is in turn lower than the unary + and -. Arithmetic operators associate left to right.

2.6 Relational and Logical Operators Programmation impérative - Prof. Béat Hirsbrunner été 2002 2.6 Relational and Logical Operators Relational operators: >, >=, <, <= Equality operators: ==, != Logical operators: &&, || Expressions connected by && and || are evaluated left to right, and evaluation stops as soon as the truth or falsehood of the result is known Example: for (i=0; i<lim-1 && (c=getchar()) != ‘\n’ && c != EOF; ++i) s[i] = c; By definition, the numeric value of a relational or logical expression is 1 if the relation is true, and 0 if the relational is false Unary negation operator ! Converts a non-zero operand into 0, and a zero operand into 1 Example: if (!valid) is equivalent to if (valid == 0)

Programmation impérative - Prof. Béat Hirsbrunner 2.7 Type Conversation Arithmetic Conversion Rules int –> unsigned –> long –> double char, short int float Vertical conversions are always performed Horizontal conversions are performed only when necessary Explicit type conversions : cast unary operator (type-name) expression Example: (double) n

2.8 Increment and Decrement Operators Programmation impérative - Prof. Béat Hirsbrunner été 2002 2.8 Increment and Decrement Operators The increment operator ++ adds 1 to its operand, while the decrement operator -- substracts 1 ++ and -- may be used either as prefix or postfix operators: ++n increments n before its value is used n++ increments n after its value has been used Example if n is 5, then x = ++n; sets x to 6, but x = n++; sets x to 5. In both cases, n becomes 6.

Programmation impérative - Prof. Béat Hirsbrunner 2.9 Bitwise Operators & bitwise AND | bitwise inclusive OR ^ bitwise exclusive OR << left shift >> right shift ~ one’s complement (converts each 1-bit into a 0-bit and vice versa) Examples n = n & 0177 (sets to zero all but the low-order 7 bits of n) n = n & ~077 (sets the last 6 bits of n to zero) Illustration /* getbits: get n bits from position p */ unsigned my_getbits(unsigned x, int p, int n) { return (x >> (p+1-n)) & ~(~0 << n); } p p - n n p - n + 1 moves the desired n bits to the right places 0-bits in the rightmost n bits and 1-bits elsewhere

2.10 Assignment Operators and Expressions Programmation impérative - Prof. Béat Hirsbrunner été 2002 2.10 Assignment Operators and Expressions Most binary operators have a corresponding assignment operator op=, where op is one of : + – * / % << >> & ^ | If expr1 and expr2 are expressions, then expr1 op= expr2 is equivalent to expr1 = expr1 op (expr2) except that expr1 is computed only once Assignment expression has the same value as the left expression of the assignment Example: while ((c = getchar()) != EOF) {…}

2.11 Conditional Expressions Programmation impérative - Prof. Béat Hirsbrunner été 2002 2.11 Conditional Expressions The conditional expression expr1 ? expr2 : expr3 provides an alternate way to write the if-else statement. Note that the operator “?:” has three operands. Such an operator is commonly called a ternary operator. Example z = (a > b) ? a : b; /* z = max(a,b) */

2.12 Precedence and Order of Evaluation Programmation impérative - Prof. Béat Hirsbrunner été 2002 2.12 Precedence and Order of Evaluation The rules for precedence and associativity of all operators are summarized in Table 2.1. C, like most languages, does not specify the order in which the operands of an operator are evaluated. The exceptions are (with a guaranted left to right evaluation) : && || ?: , Examples In a statement like "x = f() + g();" f may be evaluated before g or vice versa. Logical expressions are evaluated from left to right and the evaluation is stopped as soon as the result TRUE or FALSE is established.

Table 2.1: Precedence and Associativity of Operators Programmation impérative - Prof. Béat Hirsbrunner été 2002 Table 2.1: Precedence and Associativity of Operators Associativity Operators left to right () [] -> . right to left ! ~ ++ -- + - * (type) sizeof 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 || left to right ?: right to left = += -= *= /= %= &= ^= |= <<= >>= left to right , Remark. Unary & +, -, and * have higher precedence than the binary forms.