Chapter 9. Subprograms
|
|
- Drusilla Dorsey
- 7 years ago
- Views:
Transcription
1 Chapter 9 Subprograms ISBN Chapter 9 Topics Introduction Fundamentals of Subprograms Design Issues for Subprograms Local Referencing Environments Parameter-Passing Methods Parameters That Are Subprogram Names Overloaded Subprograms Generic Subprograms Design Issues for Functions User-Defined Overloaded Operators Coroutines 9-2 1
2 Introduction Two fundamental abstraction facilities Process abstraction Emphasized from early days Data abstraction Emphasized in the1980s 9-3 Fundamentals of Subprograms Each subprogram has a single entry point The calling program is suspended during execution of the called subprogram Control always returns to the caller when the called subprogram s execution terminates 9-4 2
3 Basic Definitions (1/3) A subprogram definition describes the interface to and the actions of the subprogram abstraction A subprogram call is an explicit request that the subprogram be executed A subprogram header is the first part of the definition, including the name, the kind of subprogram, and the formal parameters 9-5 Basic Definitions (2/3) The parameter profile (aka signature) of a subprogram is the number, order, and types of its parameters The protocol is a subprogram s parameter profile and, if it is a function, its return type A subprogram declaration provides the protocol, but not the body, of the subprogram Function declarations in C and C++ are often called prototypes 9-6 3
4 Basic Definitions (3/3) A formal parameter is a dummy variable listed in the subprogram header and used in the subprogram An actual parameter represents a value or address used in the subprogram call statement caller d = f1(a, b, c) actual parameter formal parameter subprogram definition int f1(int x, float y, int z) { 9-7 Actual/Formal Parameter Correspondence (Positional) Positional The binding of actual parameters to formal parameters is by position the first actual parameter is bound to the first formal parameter and so forth Safe and effective caller d = f1(a, b, c) int f1(int x, float y, int z) { 9-8 4
5 Actual/Formal Parameter Correspondence (Keyword) Keyword The name of the formal parameter to which an actual parameter is to be bound is specified with the actual parameter Sumer (Length => My_Length, List => My_Array, Sum => My_Sum); In Ada Advantage: Parameters can appear in any order Disadvantage: user must know the formal parameter s names 9-9 Mixed Mode In Ada Positional Sumer (My_Length, Sum => My_Sum List => My_Array, ); Keyword
6 Formal Parameter Default Values In certain languages (e.g., C++, Ada), formal parameters can have default values (if no actual parameter is passed) definition function Compute_Pay(Income : Float; Exemptions : Integer := 1; Tax_Rate : Float) return Float; call Pay := Compute_Pay( , Tax_Rate => 0.15); then Exemptions has its default value Default Parameters in C++ In C++, default parameters must appear last because parameters are positionally associated definition call float compute_pay(float income, float tax_rate, int exemptions = 1) pay = compute_pay( , 0.15); then exemptions has its default value
7 Variable Number of Parameters in C# C# methods can accept a variable number of parameters as long as they are of the same type 9-13 Procedures and Functions There are two categories of subprograms Procedures are collection of statements that define parameterized computations Functions structurally resemble procedures but are semantically modeled on mathematical functions They are expected to produce no side effects In practice, program functions have side effects
8 Design Issues for Subprograms What parameter passing methods are provided? Are parameter types checked? Are local variables static or dynamic? Can subprogram definitions appear in other subprogram definitions? Can subprograms be overloaded? Can subprogram be generic? 9-15 Local Referencing Environments Local variables can be stack-dynamic (bound to storage) Advantages Support for recursion Storage for locals is shared among some subprograms Disadvantages Allocation/de-allocation, initialization time Indirect addressing Subprograms cannot be history sensitive
9 Local Referencing Environments Local variables can be static More efficient (no indirection) No run-time overhead Cannot support recursion #include <stdio.h> static int sum; stack-dynamic int fun1(int a, float b) { static int cnt; int i, j; static } stack-dynamic 9-17 Parameter Passing Methods Ways in which parameters are transmitted to and/or from called subprograms Pass-by-value Pass-by-result Pass-by-value-result Pass-by-reference Pass-by-name
10 Semantics Models of Parameter Passing In Mode Out Mode Inout Mode 9-19 Pass-by-Value (In Mode) The value of the actual parameter is used to initialize the corresponding formal parameter Normally implemented by copying Can be implemented by transmitting an access path but not recommended (enforcing write protection is not easy) When copies are used, additional storage is required Storage and copy operations can be costly
11 Illustrating Pass-by-Value caller d = f1(a, b, c) int f1(int x, float y, int z) { push(c) push(b) push(a) a b c stack x y z 9-21 Pass-by-Result (Out Mode) An implementation model for out-mode parameters the corresponding formal parameter acts as a local variable; its value is transmitted to caller s actual parameter when control is returned to the caller Require extra storage location and copy operation Potential problem: sub(p1, p1); whichever formal parameter is copied back will represent the current value of p
12 Pass-by-Result: C# Examples void DoIt(out int x, int index) { x = 17; index = 42; } sub = 21; f.doit(out list[sub], sub); If the address to which to return the value is computed on entry to the method, 17 will be returned to list[21] If the address is computed just before return, 17 will be returned to list[42] 9-23 Pass-by-Value-Result (Inout Mode) A combination of pass-by-value and pass-by-result Sometimes called pass-by-copy Formal parameters have local storage Disadvantages: Those of pass-by-result Those of pass-by-value
13 Pass-by-Reference (for Inout Mode) Pass an access path (usually an address) Also called pass-by-sharing Passing process is efficient (no copying and no duplicated storage) Disadvantages Slower accesses (compared to pass-by-value) to formal parameters Potentials for un-wanted side effects Un-wanted aliases (access broadened) 9-25 Creating Alias With Pass-By-Reference definition void fun(int &first, int &second) call fun(total, total) call (if i == j) fun(list[i], list[j])
14 Example of Creating Alias in C int * global; void main() { sub(global); } void sub(int * param) { } global and param are aliases 9-27 Pass-by-Name (Inout Mode) By textual substitution Formals are bound to an access method at the time of the call, but actual binding to a value or address takes place at the time of a reference or assignment Allows flexibility in late binding
15 Pass-by-Name: Resulting Semantics If actual is a scalar variable, it is pass-by-reference If actual is a constant expression, it is pass-byvalue If actual is an array element, it is like nothing else procedure sub1(x: int; y: int); begin x := 1; y := 2; x := 2; y := 3; end; sub1(i, a[i]); 補 充 教 材 9-29 Pass-by-Name: Resulting Semantics If actual is an expression with a reference to a variable that is also accessible in the program, it is also like nothing else e.g. (assume k is a global variable) procedure sub1(x: int; y: int; z: int); begin k := 1; y := x; k := 5; z := x; end; sub1(k+1, j, i); 補 充 教 材
16 Implementing Parameter-Passing Methods In most language parameter communication takes place through the run-time stack Pass-by-value parameters have their values copied into stack locations, which then serve as storage for corresponding formal parameters Pass-by-result parameters are implemented as the opposite of pass-by-value Pass-by-reference is the simplest to implement; only an address is placed in the stack 9-31 One Possible Stack Implementation Passed by value Passed by result Passed by value-result Passed by reference
17 Parameter Passing Methods of Major Languages (Fortran and C) Fortran C Always used the inout semantics model Before Fortran 77: pass-by-reference Fortran 77 and later: scalar variables are often passed by value-result Pass-by-value Pass-by-reference is achieved by using pointers as parameters 9-33 Parameter Passing Methods of Major Languages (C++ and Java) C++ A special pointer type called reference type for pass-by-reference Java All parameters are passed by value Object parameters are passed by reference
18 Parameter Passing Methods of Major Languages (Ada) Ada Three semantics modes of parameter transmission: in, out, in out; in is the default mode Formal parameters declared out can be assigned but not referenced those declared in can be referenced but not assigned in out parameters can be referenced and assigned 9-35 Parameter Passing Methods of Major Languages (C# and Others) C# Default method: pass-by-value Pass-by-reference is specified by preceding both a formal parameter and its actual parameter with ref PHP: very similar to C# Perl: all actual parameters are implicitly placed in a predefined array
19 Type Checking Parameters Considered very important for reliability FORTRAN 77 and original C: none Pascal, FORTRAN 90, Java, and Ada: it is always required ANSI C and C++: choice is made by the user Prototypes Relatively new languages Perl, JavaScript, and PHP do not require type checking 9-37 In C89, functions can be defined in the original C double sin(x) double x; { } avoid type checking with prototype method double sin(double x) { } type checking performed double value; int count; value = sin(count) legal but incorrect double value; int count; value = sin(count) legal yet correct
20 In C99 and C++ All functions must have their formal parameters in prototype format Type checking can be avoided for some of the parameters By replacing the last part of the parameter list with an ellipsis int printf(cost char* format_string, ) 9-39 Multidimensional Arrays as Parameters If a multidimensional array is passed to a subprogram and the subprogram is separately compiled, the compiler needs to know the declared size of that array to build the storage mapping function void fun(int matrix[][]) { a = matrix[i][j] + 1; } Where is matrix[i][j]?
21 Multidimensional Arrays as Parameters: C and C++ Programmer is required to include the declared sizes of all but the first subscript in the actual parameter void fun(int matrix[][10]) { } void main() { int mat[5][10]; fun(mat); } for the storage mapping function Note: C array is row-major 9-41 Multidimensional Arrays as Parameters: C and C++ (Continued) Disallows writing flexible subprograms Programmer s solution: pass a pointer to the array and the sizes of the dimensions as other parameters void fun(float *mat_ptr, int num_rows, int num_cols); the user must include the storage mapping function in terms of the size parameters *(mat_ptr +(row * num_cols) + col) = x; (programmer 自 己 寫 的 )
22 Multidimensional Arrays as Parameters: Ada Constrained arrays: Not a problem; declared size is part of the array s type Unconstrained arrays index ranges are not given in the array type definition. can be formal parameters cause problems? type Mat_Type is array (Integer range <>, Integer range <>) of Float; unconstrained array type function Sumer(Mat : in Mat_Type) return Float 9-43 Ada s Solution Definitions of variables of unconstrained array types must include index ranges. Subprogram can obtain the index range information of the actual parameter type Mat_Type is array (Integer range <>, Integer range <>) of Float; Mat_1 : Mat_Type(1..100, 1..20); index range function Sumer(Mat : in Mat_Type) return Float is begin for Row in Mat range(1) loop for Col in Mat range(2) loop get ranges
23 Multidimensional Arrays as Parameters: Fortran Formal parameter that are arrays have a declaration after the header For single-dimension arrays, subscripts in the declaration are irrelevant For multi-dimensional arrays, the subscripts allow the compiler to build the storage-mapping function 9-45 Fortran Example Subroutine Sub(Matrix, Rows, Cols, Result) 傳 入 參 數 Integer, Intent(In) :: Rows, Cols Real, Dimension(Rows, Cols), Intent(In) :: Matrix Real, Intent(In) :: Result 陣 列 的 大 小 End Subroutine Sub array declaration
24 Multidimensional Arrays as Parameters: Java and C# Similar to Ada Arrays are objects; they are all singledimensioned, but the elements can be arrays Each array inherits a named constant (length in Java, Length in C#) that is set to the length of the array when the array object is created 9-47 Example in Java row 的 大 小 float sumer(float mat[ ][ ]) { float sum = 0.0f; for (int row = 0; row < mat.length, row++) { for (int col = 0; col < mat[row].length; col++ { sum += mat[row][col]; } } column 的 大 小 return sum; }
25 Design Considerations for Parameter Passing Two important considerations Efficiency One-way or two-way data transfer But the above considerations are in conflict Good programming suggest limited access to variables, which means one-way whenever possible But pass-by-reference is more efficient to pass structures of significant size (like an array) 請 自 行 閱 讀 9-49 Parameters that are Subprogram Names It is sometimes convenient to pass subprogram names as parameters Issues: 1. Are parameter types (of the passed subprogram) checked? 2. What is the correct referencing environment for a subprogram that was sent as a parameter? (the problem arises only with languages that allow nested subprograms)
26 Parameters that are Subprogram Names: Parameter Type Checking C and C++ functions cannot be passed as parameters, but pointers to functions can be passed The type of the pointer is the function s protocol So parameters can be type checked accepting a pointer to function int fun1(int x, float y); int (*p)(int,float); p = fun1; fun2(p); p is a pointer to function int fun2(int (*fc)(int, float)) { fc(7, 12.3); return 0; } passing p as a parameter 9-51 Parameters that are Subprogram Names: Parameter Type Checking FORTRAN 95 type checks Ada does not allow subprogram parameters; a similar alternative is provided via Ada s generic facility
27 Parameters that are Subprogram Names: Referencing Environment What is the referencing environment of the subprogram that is passed as a parameter? Shallow binding: The environment of the call statement that enacts the passed subprogram Deep binding: The environment of the definition of the passed subprogram Ad hoc binding: The environment of the call statement that passed the subprogram 9-53 Referencing Environment Example function sub1() { var x; function sub2() { alert(x); }; function sub3() { var x; x = 3; sub4(sub2); }; function sub4(subx) { var x; x = 4; subx(); }; x = 1; sub3(); }; sub2 中 的 x 是 哪 裏 的? Shallow binding: sub2 中 的 x 是 sub4 的 Deep binding: sub2 中 的 x 是 sub1 的 Ad hoc binding: sub2 中 的 x 是 sub3 的
28 Overloaded Subprograms An overloaded subprogram is one that has the same name as another subprogram in the same referencing environment Every version of an overloaded subprogram has a unique protocol double pow(double, double) double pow(int, double) double pow(float, double) overloaded C++, Java, C#, and Ada include predefined overloaded subprograms 9-55 Overloaded Subprograms (Continued) In Ada, the return type of an overloaded function can be used to disambiguate calls (thus two overloaded functions can have the same parameter profile and differ only in their return types) function f1(p1: in Integer) return Float; function f1(p1: in Integer) return Integer; Because Java, C++, and C# allow mixed-mode expressions, the return type is irrelevant to the disambiguation ( 因 為 有 coercion) int fun(int p1); float fun(int p1); Which one should be called in fun(3)?
29 Generic Subprograms A generic or polymorphic subprogram takes parameters of different types on different activations Overloaded subprograms provide ad hoc polymorphism (they need not behave similarly) parametric polymorphism is provided by a subprogram that takes generic parameters that are used in type expressions that describes the types of the parameters of the subprogram 9-57 Examples of parametric polymorphism: C++ template <class Type> Type max(type first, Type second) { } return first > second? first : second; The above template can be instantiated for any type for which operator > is defined. For example int max (int first, int second) { return first > second? first : second; } 只 寫 一 次 程 式 碼, 產 生 對 應 不 同 參 數 型 態 的 版 本
30 Design Issues for Functions Are side effects allowed? Parameters should always be in-mode to reduce side effect (like Ada) What types of return values are allowed? Most imperative languages restrict the return types C allows any type except arrays and functions C++ is like C but also allows user-defined types Ada allows any type Java and C# do not have functions but methods can have any type 9-59 User-Defined Overloaded Operators Operators can be overloaded in Ada and C++ An Ada example Function * (A,B: in Vec_Type): return Integer is Sum: Integer := 0; begin for Index in A range loop Sum := Sum + A(Index) * B(Index) end loop return sum; end * ; 將 * 定 義 成 內 積 運 算 c = a * b; -- a and b are of type Vec_Type
31 Coroutines A coroutine is a subprogram that has multiple entries and controls them itself Also called symmetric control: caller and called coroutines are on a more equal basis A coroutine call is named a resume The first resume of a coroutine is to its beginning, but subsequent calls enter at the point just after the last executed statement in the coroutine Coroutines repeatedly resume each other, possibly forever Coroutines provide quasi-concurrent execution of program units (the coroutines); their execution is interleaved, but not overlapped 9-61 Coroutines Illustrated: Possible Execution Controls
32 Coroutines Illustrated: Possible Execution Controls 9-63 Coroutines Illustrated: Possible Execution Controls with Loops
33 Summary A subprogram definition describes the actions represented by the subprogram Subprograms can be either functions or procedures Local variables in subprograms can be stackdynamic or static Three models of parameter passing: in mode, out mode, and inout mode Some languages allow operator overloading Subprograms can be generic A coroutine is a special subprogram with multiple entries
Chapter 5 Names, Bindings, Type Checking, and Scopes
Chapter 5 Names, Bindings, Type Checking, and Scopes Chapter 5 Topics Introduction Names Variables The Concept of Binding Type Checking Strong Typing Scope Scope and Lifetime Referencing Environments Named
More informationOrganization of Programming Languages CS320/520N. Lecture 05. Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.
Organization of Programming Languages CS320/520N Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.edu Names, Bindings, and Scopes A name is a symbolic identifier used
More informationCOMP 356 Programming Language Structures Notes for Chapter 10 of Concepts of Programming Languages Implementing Subprograms.
COMP 356 Programming Language Structures Notes for Chapter 10 of Concepts of Programming Languages Implementing Subprograms 1 Activation Records activation declaration location Recall that an activation
More informationParameter passing in LISP
Parameter passing in LISP The actual parameters in a function call are always expressions, represented as lists structures. LISP provides two main methods of parameter passing: Pass/Call-by-value. The
More informationStack Allocation. Run-Time Data Structures. Static Structures
Run-Time Data Structures Stack Allocation Static Structures For static structures, a fixed address is used throughout execution. This is the oldest and simplest memory organization. In current compilers,
More informationClass 16: Function Parameters and Polymorphism
Class 16: Function Parameters and Polymorphism SI 413 - Programming Languages and Implementation Dr. Daniel S. Roche United States Naval Academy Fall 2011 Roche (USNA) SI413 - Class 16 Fall 2011 1 / 15
More informationGlossary of Object Oriented Terms
Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction
More informationThe C Programming Language course syllabus associate level
TECHNOLOGIES The C Programming Language course syllabus associate level Course description The course fully covers the basics of programming in the C programming language and demonstrates fundamental programming
More informationParameter Passing. Standard mechanisms. Call by value-result Call by name, result
Parameter Passing Standard mechanisms Call by value Call by reference Other methods Call by value-result Call by name, result Terms Function definition where the details of the function are presented (type,
More informationParameter Passing in Pascal
Parameter Passing in Pascal Mordechai Ben-Ari Department of Science Teaching Weizmann Institute of Science Rehovot 76100 Israel ntbenari@wis.weizmann.ac.il Abstract This paper claims that reference parameters
More informationParameter Passing Methods
Parameter Passing Methods Procedural abstraction Parameter passing methods pass by value pass by result pass by value-result pass by reference aliasing pass by name Procedures/functions as arguments 1
More informationParameter Passing. Parameter Passing. Parameter Passing Modes in Fortran. Parameter Passing Modes in C
Parameter Passing In this set of notes you will learn about: Parameter passing modes Call by Call by reference Call by sharing Call by result Call by /result Call by name Subroutine closures as parameters
More informationKITES TECHNOLOGY COURSE MODULE (C, C++, DS)
KITES TECHNOLOGY 360 Degree Solution www.kitestechnology.com/academy.php info@kitestechnology.com technologykites@gmail.com Contact: - 8961334776 9433759247 9830639522.NET JAVA WEB DESIGN PHP SQL, PL/SQL
More informationChapter 5 Functions. Introducing Functions
Chapter 5 Functions 1 Introducing Functions A function is a collection of statements that are grouped together to perform an operation Define a function Invoke a funciton return value type method name
More informationCSCI 3136 Principles of Programming Languages
CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University Winter 2013 CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University
More informationProgramming Language Features (cont.) CMSC 330: Organization of Programming Languages. Parameter Passing in OCaml. Call-by-Value
CMSC 33: Organization of Programming Languages Programming Language Features (cont.) Names & binding Namespaces Static (lexical) scopes Dynamic scopes Polymorphism Parametric Subtype Ad-hoc Parameter Passing
More informationEmbedded Systems. Review of ANSI C Topics. A Review of ANSI C and Considerations for Embedded C Programming. Basic features of C
Embedded Systems A Review of ANSI C and Considerations for Embedded C Programming Dr. Jeff Jackson Lecture 2-1 Review of ANSI C Topics Basic features of C C fundamentals Basic data types Expressions Selection
More informationPART-A Questions. 2. How does an enumerated statement differ from a typedef statement?
1. Distinguish & and && operators. PART-A Questions 2. How does an enumerated statement differ from a typedef statement? 3. What are the various members of a class? 4. Who can access the protected members
More informationStatic vs. Dynamic. Lecture 10: Static Semantics Overview 1. Typical Semantic Errors: Java, C++ Typical Tasks of the Semantic Analyzer
Lecture 10: Static Semantics Overview 1 Lexical analysis Produces tokens Detects & eliminates illegal tokens Parsing Produces trees Detects & eliminates ill-formed parse trees Static semantic analysis
More informationVB.NET Programming Fundamentals
Chapter 3 Objectives Programming Fundamentals In this chapter, you will: Learn about the programming language Write a module definition Use variables and data types Compute with Write decision-making statements
More informationCompiling Object Oriented Languages. What is an Object-Oriented Programming Language? Implementation: Dynamic Binding
Compiling Object Oriented Languages What is an Object-Oriented Programming Language? Last time Dynamic compilation Today Introduction to compiling object oriented languages What are the issues? Objects
More information13 Classes & Objects with Constructors/Destructors
13 Classes & Objects with Constructors/Destructors 13.1 Introduction In object oriented programming, the emphasis is on data rather than function. Class is a way that binds the data & function together.
More informationSemantic Analysis: Types and Type Checking
Semantic Analysis Semantic Analysis: Types and Type Checking CS 471 October 10, 2007 Source code Lexical Analysis tokens Syntactic Analysis AST Semantic Analysis AST Intermediate Code Gen lexical errors
More informationAn Incomplete C++ Primer. University of Wyoming MA 5310
An Incomplete C++ Primer University of Wyoming MA 5310 Professor Craig C. Douglas http://www.mgnet.org/~douglas/classes/na-sc/notes/c++primer.pdf C++ is a legacy programming language, as is other languages
More informationC++ INTERVIEW QUESTIONS
C++ INTERVIEW QUESTIONS http://www.tutorialspoint.com/cplusplus/cpp_interview_questions.htm Copyright tutorialspoint.com Dear readers, these C++ Interview Questions have been designed specially to get
More informationPassing Arguments. A comparison among programming languages. Curtis Bright. April 20, 2011
Passing Arguments A comparison among programming languages Curtis Bright April 20, 2011 Abstract This report describes and compares the argument passing styles used in contemporary programming languages,
More informationChapter 5 Programming Statements. Chapter Table of Contents
Chapter 5 Programming Statements Chapter Table of Contents OVERVIEW... 57 IF-THEN/ELSE STATEMENTS... 57 DO GROUPS... 58 IterativeExecution... 59 JUMPING... 61 MODULES... 62 Defining and Executing a Module....
More informationEmbedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C
Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C 1 An essential part of any embedded system design Programming 2 Programming in Assembly or HLL Processor and memory-sensitive
More informationC++FA 5.1 PRACTICE MID-TERM EXAM
C++FA 5.1 PRACTICE MID-TERM EXAM This practicemid-term exam covers sections C++FA 1.1 through C++FA 1.4 of C++ with Financial Applications by Ben Van Vliet, available at www.benvanvliet.net. 1.) A pointer
More informationLecture 3. Arrays. Name of array. c[0] c[1] c[2] c[3] c[4] c[5] c[6] c[7] c[8] c[9] c[10] c[11] Position number of the element within array c
Lecture 3 Data structures arrays structs C strings: array of chars Arrays as parameters to functions Multiple subscripted arrays Structs as parameters to functions Default arguments Inline functions Redirection
More informationMultichoice Quetions 1. Atributes a. are listed in the second part of the class box b. its time is preceded by a colon. c. its default value is
Multichoice Quetions 1. Atributes a. are listed in the second part of the class box b. its time is preceded by a colon. c. its default value is preceded by an equal sign d. its name has undereline 2. Associations
More informationDatabase Programming with PL/SQL: Learning Objectives
Database Programming with PL/SQL: Learning Objectives This course covers PL/SQL, a procedural language extension to SQL. Through an innovative project-based approach, students learn procedural logic constructs
More informationC++FA 3.1 OPTIMIZING C++
C++FA 3.1 OPTIMIZING C++ Ben Van Vliet Measuring Performance Performance can be measured and judged in different ways execution time, memory usage, error count, ease of use and trade offs usually have
More informationArrays in Java. Working with Arrays
Arrays in Java So far we have talked about variables as a storage location for a single value of a particular data type. We can also define a variable in such a way that it can store multiple values. Such
More informationCSCI 253. Object Oriented Programming (OOP) Overview. George Blankenship 1. Object Oriented Design: Java Review OOP George Blankenship.
CSCI 253 Object Oriented Design: Java Review OOP George Blankenship George Blankenship 1 Object Oriented Programming (OOP) OO Principles Abstraction Encapsulation Abstract Data Type (ADT) Implementation
More informationStorage Classes CS 110B - Rule Storage Classes Page 18-1 \handouts\storclas
CS 110B - Rule Storage Classes Page 18-1 Attributes are distinctive features of a variable. Data type, int or double for example, is an attribute. Storage class is another attribute. There are four storage
More informationScoping (Readings 7.1,7.4,7.6) Parameter passing methods (7.5) Building symbol tables (7.6)
Semantic Analysis Scoping (Readings 7.1,7.4,7.6) Static Dynamic Parameter passing methods (7.5) Building symbol tables (7.6) How to use them to find multiply-declared and undeclared variables Type checking
More informationOracle Database: SQL and PL/SQL Fundamentals
Oracle University Contact Us: +966 12 739 894 Oracle Database: SQL and PL/SQL Fundamentals Duration: 5 Days What you will learn This Oracle Database: SQL and PL/SQL Fundamentals training is designed to
More informationPL/SQL Overview. Basic Structure and Syntax of PL/SQL
PL/SQL Overview PL/SQL is Procedural Language extension to SQL. It is loosely based on Ada (a variant of Pascal developed for the US Dept of Defense). PL/SQL was first released in ١٩٩٢ as an optional extension
More informationAP Computer Science Java Subset
APPENDIX A AP Computer Science Java Subset The AP Java subset is intended to outline the features of Java that may appear on the AP Computer Science A Exam. The AP Java subset is NOT intended as an overall
More informationwww.sahajsolns.com Chapter 4 OOPS WITH C++ Sahaj Computer Solutions
Chapter 4 OOPS WITH C++ Sahaj Computer Solutions 1 Session Objectives Classes and Objects Class Declaration Class Members Data Constructors Destructors Member Functions Class Member Visibility Private,
More informationJava Interview Questions and Answers
1. What is the most important feature of Java? Java is a platform independent language. 2. What do you mean by platform independence? Platform independence means that we can write and compile the java
More information5 Arrays and Pointers
5 Arrays and Pointers 5.1 One-dimensional arrays Arrays offer a convenient way to store and access blocks of data. Think of arrays as a sequential list that offers indexed access. For example, a list of
More informationMoving from C++ to VBA
Introduction College of Engineering and Computer Science Mechanical Engineering Department Mechanical Engineering 309 Numerical Analysis of Engineering Systems Fall 2014 Number: 15237 Instructor: Larry
More informationarrays C Programming Language - Arrays
arrays So far, we have been using only scalar variables scalar meaning a variable with a single value But many things require a set of related values coordinates or vectors require 3 (or 2, or 4, or more)
More informationInformation technology Programming languages Fortran Enhanced data type facilities
ISO/IEC JTC1/SC22/WG5 N1379 Working draft of ISO/IEC TR 15581, second edition Information technology Programming languages Fortran Enhanced data type facilities This page to be supplied by ISO. No changes
More informationPostgreSQL Functions By Example
Postgre joe.conway@credativ.com credativ Group January 20, 2012 What are Functions? Introduction Uses Varieties Languages Full fledged SQL objects Many other database objects are implemented with them
More informationAnswers to Review Questions Chapter 7
Answers to Review Questions Chapter 7 1. The size declarator is used in a definition of an array to indicate the number of elements the array will have. A subscript is used to access a specific element
More informationCS 141: Introduction to (Java) Programming: Exam 1 Jenny Orr Willamette University Fall 2013
Oct 4, 2013, p 1 Name: CS 141: Introduction to (Java) Programming: Exam 1 Jenny Orr Willamette University Fall 2013 1. (max 18) 4. (max 16) 2. (max 12) 5. (max 12) 3. (max 24) 6. (max 18) Total: (max 100)
More information4.8 Thedo while Repetition Statement Thedo while repetition statement
1 4.8 hedo while Repetition Statement hedo while repetition statement Similar to thewhile structure Condition for repetition tested after the body of the loop is performed All actions are performed at
More informationName: Class: Date: 9. The compiler ignores all comments they are there strictly for the convenience of anyone reading the program.
Name: Class: Date: Exam #1 - Prep True/False Indicate whether the statement is true or false. 1. Programming is the process of writing a computer program in a language that the computer can respond to
More informationChapter 5. Recursion. Data Structures and Algorithms in Java
Chapter 5 Recursion Data Structures and Algorithms in Java Objectives Discuss the following topics: Recursive Definitions Method Calls and Recursion Implementation Anatomy of a Recursive Call Tail Recursion
More informationIntroduction to Modern Fortran
Introduction to Modern Fortran p. 1/?? Introduction to Modern Fortran Procedures Nick Maclaren Computing Service nmm1@cam.ac.uk, ext. 34761 November 2007 Introduction to Modern Fortran p. 2/?? Sub-Dividing
More informationTutorial on C Language Programming
Tutorial on C Language Programming Teodor Rus rus@cs.uiowa.edu The University of Iowa, Department of Computer Science Introduction to System Software p.1/64 Tutorial on C programming C program structure:
More informationSemester Review. CSC 301, Fall 2015
Semester Review CSC 301, Fall 2015 Programming Language Classes There are many different programming language classes, but four classes or paradigms stand out:! Imperative Languages! assignment and iteration!
More informationC++ Overloading, Constructors, Assignment operator
C++ Overloading, Constructors, Assignment operator 1 Overloading Before looking at the initialization of objects in C++ with constructors, we need to understand what function overloading is In C, two functions
More informationGoals for This Lecture:
Goals for This Lecture: Understand the pass-by-value and passby-reference argument passing mechanisms of C++ Understand the use of C++ arrays Understand how arrays are passed to C++ functions Call-by-value
More informationMoving from CS 61A Scheme to CS 61B Java
Moving from CS 61A Scheme to CS 61B Java Introduction Java is an object-oriented language. This document describes some of the differences between object-oriented programming in Scheme (which we hope you
More informationIn this Chapter you ll learn:
Now go, write it before them in a table, and note it in a book. Isaiah 30:8 To go beyond is as wrong as to fall short. Confucius Begin at the beginning, and go on till you come to the end: then stop. Lewis
More informationChapter 1. Dr. Chris Irwin Davis Email: cid021000@utdallas.edu Phone: (972) 883-3574 Office: ECSS 4.705. CS-4337 Organization of Programming Languages
Chapter 1 CS-4337 Organization of Programming Languages Dr. Chris Irwin Davis Email: cid021000@utdallas.edu Phone: (972) 883-3574 Office: ECSS 4.705 Chapter 1 Topics Reasons for Studying Concepts of Programming
More informationSymbol Tables. Introduction
Symbol Tables Introduction A compiler needs to collect and use information about the names appearing in the source program. This information is entered into a data structure called a symbol table. The
More informationJava Interfaces. Recall: A List Interface. Another Java Interface Example. Interface Notes. Why an interface construct? Interfaces & Java Types
Interfaces & Java Types Lecture 10 CS211 Fall 2005 Java Interfaces So far, we have mostly talked about interfaces informally, in the English sense of the word An interface describes how a client interacts
More informationDebugging. Common Semantic Errors ESE112. Java Library. It is highly unlikely that you will write code that will work on the first go
Debugging ESE112 Java Programming: API, Psuedo-Code, Scope It is highly unlikely that you will write code that will work on the first go Bugs or errors Syntax Fixable if you learn to read compiler error
More informationHigh-Level Programming Languages. Nell Dale & John Lewis (adaptation by Michael Goldwasser)
High-Level Programming Languages Nell Dale & John Lewis (adaptation by Michael Goldwasser) Low-Level Languages What are disadvantages of low-level languages? (e.g., machine code or assembly code) Programming
More informationlanguage 1 (source) compiler language 2 (target) Figure 1: Compiling a program
CS 2112 Lecture 27 Interpreters, compilers, and the Java Virtual Machine 1 May 2012 Lecturer: Andrew Myers 1 Interpreters vs. compilers There are two strategies for obtaining runnable code from a program
More informationPolymorphism. Problems with switch statement. Solution - use virtual functions (polymorphism) Polymorphism
Polymorphism Problems with switch statement Programmer may forget to test all possible cases in a switch. Tracking this down can be time consuming and error prone Solution - use virtual functions (polymorphism)
More informationObject-Oriented Design Lecture 4 CSU 370 Fall 2007 (Pucella) Tuesday, Sep 18, 2007
Object-Oriented Design Lecture 4 CSU 370 Fall 2007 (Pucella) Tuesday, Sep 18, 2007 The Java Type System By now, you have seen a fair amount of Java. Time to study in more depth the foundations of the language,
More informationCpSc212 Goddard Notes Chapter 6. Yet More on Classes. We discuss the problems of comparing, copying, passing, outputting, and destructing
CpSc212 Goddard Notes Chapter 6 Yet More on Classes We discuss the problems of comparing, copying, passing, outputting, and destructing objects. 6.1 Object Storage, Allocation and Destructors Some objects
More informationOracle Database: SQL and PL/SQL Fundamentals
Oracle University Contact Us: 1.800.529.0165 Oracle Database: SQL and PL/SQL Fundamentals Duration: 5 Days What you will learn This course is designed to deliver the fundamentals of SQL and PL/SQL along
More informationALLIED PAPER : DISCRETE MATHEMATICS (for B.Sc. Computer Technology & B.Sc. Multimedia and Web Technology)
ALLIED PAPER : DISCRETE MATHEMATICS (for B.Sc. Computer Technology & B.Sc. Multimedia and Web Technology) Subject Description: This subject deals with discrete structures like set theory, mathematical
More informationObject Oriented Software Design II
Object Oriented Software Design II C++ intro Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa February 26, 2012 G. Lipari (Scuola Superiore Sant Anna) C++ Intro February 26,
More informationMatrix Multiplication
Matrix Multiplication CPS343 Parallel and High Performance Computing Spring 2016 CPS343 (Parallel and HPC) Matrix Multiplication Spring 2016 1 / 32 Outline 1 Matrix operations Importance Dense and sparse
More informationOperator Overloading. Lecture 8. Operator Overloading. Running Example: Complex Numbers. Syntax. What can be overloaded. Syntax -- First Example
Operator Overloading Lecture 8 Operator Overloading C++ feature that allows implementer-defined classes to specify class-specific function for operators Benefits allows classes to provide natural semantics
More informationTwo-Dimensional Arrays. 15-110 Summer 2010 Margaret Reid-Miller
Two-Dimensional Arrays 15-110 Margaret Reid-Miller Two-Dimensional Arrays Arrays that we have consider up to now are onedimensional arrays, a single line of elements. Often data come naturally in the form
More informationPES Institute of Technology-BSC QUESTION BANK
PES Institute of Technology-BSC Faculty: Mrs. R.Bharathi CS35: Data Structures Using C QUESTION BANK UNIT I -BASIC CONCEPTS 1. What is an ADT? Briefly explain the categories that classify the functions
More informationCS143 Handout 18 Summer 2012 July 16 th, 2012 Semantic Analysis
CS143 Handout 18 Summer 2012 July 16 th, 2012 Semantic Analysis What Is Semantic Analysis? Parsing only verifies that the program consists of tokens arranged in a syntactically valid combination. Now we
More informationChapter 15 Functional Programming Languages
Chapter 15 Functional Programming Languages Introduction - The design of the imperative languages is based directly on the von Neumann architecture Efficiency (at least at first) is the primary concern,
More informationFunctional Programming. Functional Programming Languages. Chapter 14. Introduction
Functional Programming Languages Chapter 14 Introduction Functional programming paradigm History Features and concepts Examples: Lisp ML 1 2 Functional Programming Functional Programming Languages The
More informationJava Application Developer Certificate Program Competencies
Java Application Developer Certificate Program Competencies After completing the following units, you will be able to: Basic Programming Logic Explain the steps involved in the program development cycle
More informationJAVA - METHODS. Method definition consists of a method header and a method body. The same is shown below:
http://www.tutorialspoint.com/java/java_methods.htm JAVA - METHODS Copyright tutorialspoint.com A Java method is a collection of statements that are grouped together to perform an operation. When you call
More informationProgramming Language Theory
Programming Language Theory Takashi Hattori January 14, 2016 1 Introduction 1.1 Some questions What is a programming language? Why do we have so many programming languages? Why do you study the theory
More informationConcepts and terminology in the Simula Programming Language
Concepts and terminology in the Simula Programming Language An introduction for new readers of Simula literature Stein Krogdahl Department of Informatics University of Oslo, Norway April 2010 Introduction
More informationChapter 7: Functional Programming Languages
Chapter 7: Functional Programming Languages Aarne Ranta Slides for the book Implementing Programming Languages. An Introduction to Compilers and Interpreters, College Publications, 2012. Fun: a language
More informationBoolean Expressions, Conditions, Loops, and Enumerations. Precedence Rules (from highest to lowest priority)
Boolean Expressions, Conditions, Loops, and Enumerations Relational Operators == // true if two values are equivalent!= // true if two values are not equivalent < // true if left value is less than the
More informationFree Java textbook available online. Introduction to the Java programming language. Compilation. A simple java program
Free Java textbook available online "Thinking in Java" by Bruce Eckel, 4th edition, 2006, ISBN 0131872486, Pearson Education Introduction to the Java programming language CS 4354 Summer II 2015 The third
More informationTime Limit: X Flags: -std=gnu99 -w -O2 -fomitframe-pointer. Time Limit: X. Flags: -std=c++0x -w -O2 -fomit-frame-pointer - lm
Judge Environment Language Compilers Language Version Flags/Notes Max Memory Limit C gcc 4.8.1 Flags: -std=gnu99 -w -O2 -fomit-frame-pointer - lm C++ g++ 4.8.1 Flags: -std=c++0x -w -O2 -fomit-frame-pointer
More informationC Programming Language
C Programming Language Lecture 4 (10/13/2000) Instructor: Wen-Hung Liao E-mail: whliao@cs.nccu.edu.tw Extension: 62028 Building Programs from Existing Information Analysis Design Implementation Testing
More informationCommunication. Layered Protocols. Topics to be covered. PART 1 Layered Protocols Remote Procedure Call (RPC) Remote Method Invocation (RMI)
Distributed Systems, Spring 2004 1 Introduction Inter-process communication is at the heart of all distributed systems Communication Based on low-level message passing offered by the underlying network
More informationSolving Problems Recursively
Solving Problems Recursively Recursion is an indispensable tool in a programmer s toolkit Allows many complex problems to be solved simply Elegance and understanding in code often leads to better programs:
More informationLanguage Evaluation Criteria. Evaluation Criteria: Readability. Evaluation Criteria: Writability. ICOM 4036 Programming Languages
ICOM 4036 Programming Languages Preliminaries Dr. Amirhossein Chinaei Dept. of Electrical & Computer Engineering UPRM Spring 2010 Language Evaluation Criteria Readability: the ease with which programs
More informationChapter 13 Storage classes
Chapter 13 Storage classes 1. Storage classes 2. Storage Class auto 3. Storage Class extern 4. Storage Class static 5. Storage Class register 6. Global and Local Variables 7. Nested Blocks with the Same
More informationEl Dorado Union High School District Educational Services
El Dorado Union High School District Course of Study Information Page Course Title: ACE Computer Programming II (#495) Rationale: A continuum of courses, including advanced classes in technology is needed.
More informationFunctions Recursion. C++ functions. Declare/prototype. Define. Call. int myfunction (int ); int myfunction (int x){ int y = x*x; return y; }
Functions Recursion C++ functions Declare/prototype int myfunction (int ); Define int myfunction (int x){ int y = x*x; return y; Call int a; a = myfunction (7); function call flow types type of function
More information16 Collection Classes
16 Collection Classes Collections are a key feature of the ROOT system. Many, if not most, of the applications you write will use collections. If you have used parameterized C++ collections or polymorphic
More informationOracle Database: SQL and PL/SQL Fundamentals NEW
Oracle University Contact Us: + 38516306373 Oracle Database: SQL and PL/SQL Fundamentals NEW Duration: 5 Days What you will learn This Oracle Database: SQL and PL/SQL Fundamentals training delivers the
More informationHistory OOP languages Year Language 1967 Simula-67 1983 Smalltalk
History OOP languages Intro 1 Year Language reported dates vary for some languages... design Vs delievered 1957 Fortran High level programming language 1958 Lisp 1959 Cobol 1960 Algol Structured Programming
More information16. Recursion. COMP 110 Prasun Dewan 1. Developing a Recursive Solution
16. Recursion COMP 110 Prasun Dewan 1 Loops are one mechanism for making a program execute a statement a variable number of times. Recursion offers an alternative mechanism, considered by many to be more
More information