An Introduction to Programming in Java

Total Page:16

File Type:pdf, Size:1020Kb

An Introduction to Programming in Java An introduction to programming in Java Paul Flavell and Richard Kaye School of Mathematics and Statistics University of Birmingham November 2000 These notes form a useful introduction to programming in Java as well as a reference guide for the second half of this term’s work and are based on notes produced by Paul Flavell for MSM2G5 in the academic year 1999–2000. You will find it helpful to re-read them later on in the term after you have had some experience of writing Java programs. 1 Introduction We only have time for a brief introduction to programming in Java. Much more information about Java is available in textbooks and on the web. A good place to find information on Java is the Sun website www.javasoft.com, in particular at www.javasoft.com/docs/index.html and the online tutorial at www.javasoft.com/docs/books/tutorial/index.html I encourage you to explore these sites. They provide a more expansive view of Java than the one I will be able to present in this short course. It is the intention that everything you need to know about Java for MSM2G5 will be contained in these notes and the notes given out in the computer labs that start in the sixth week of term. You may like to get one of the numerous books on Java, many of which are kept in stock at the large book shops in town and in the book shop on campus. However, as far as I know, there isn’t any book that is really suitable for this short course to mathematicians. For this reason, these notes contain just about everything you will need. Prerequisites. I will not assume you have any programming experience. Some of the programs that we shall write involve the manipulation of complex numbers, matrices, graphs, and other standard mathematical objects that you do know about. For example, you need to know about complex numbers: their arithmetic, complex conjugate, modulus, polar coordinates, Euler’s formula, De Moivre’s Theorem and Nth-roots. You will need to bring these notes to the practical classes. 1 2 Objects and classes Objects in Java model objects in the ‘real world’. Examples. The following are objects: • My bank account. • The complex number 3 + 4i. 1 2 • The matrix . 3 4 Objects have properties; the technical term for a property of an object is an instance variable. Examples. My bank account – the current balance. 3 + 4i – the real part. 1 2 – the number of rows. 3 4 We can also do things to objects. That is, we can invoke a method on an object. Examples. My bank account – credit a sum of money. 3 + 4i – calculate its modulus. 1 2 – multiply row 1 by 3. 3 4 A class is a blueprint for objects of a particular type, that is, it describes those things that all objects of that type have in common. A class consists of the following. • Declaration of the instance variables. • Description of the methods. Example. For a BankAccount object, we might have Instance variables the name of the owner the current balance Methods credit/debit a sum of money add interest print the current balance. Example. For a ComplexNumber object, Instance variables the real part the imaginary part Methods calculate modulus. Example. For a Matrix, Instance variables number of rows number of columns entries Methods swap two rows transform into echelon form calculate determinant. 2 My bank account is an instance of the class BankAccount, or a BankAccount object. Tony Blair’s bank account is another instance of the class BankAccount. 1 + 2i is an instance of the class ComplexNumber, 7 is another instance of this class. A standard convention is that classes are given names that start with a capital letter, whereas instances of classes have names starting with a lower case letter. So ‘myBankAccount’ is a suitable name for my bank account, and ‘transformationMatrix’ would be a suitable name for a Matrix object. It’s important to understand that the instance variables of a class describe the properties possessed by a particular instance of that class. The methods of a class describe the operations that can be performed on that particular instance of that class. The type of an object is the class of which that object is an instance. For example, 3 − 2i has type ComplexNumber. 3 Java Programs A Java program consists of a collection of files called source files. A source file is a file of text that contains a description of a class. This description must be written in the Java programming language, not the informal language of the previous section. We will use the following example, which is a source file for a class BankAccount, to describe some of the main features of the Java programming language. class BankAccount { // INSTANCE VARIABLES: // The name of the owner of the account String owner; // The current balance double balance; // METHODS: // credit the account void credit(double amount) { balance = balance + amount; } // print the current balance void print() { System.out.println(owner + " has a balance of " + balance); } // add interest to the account void addInterest(double percent) { balance = balance + balance*percent/100; } // return the current balance double getBalance() { 3 return balance; } } On the first line is the statement class BankAccount The word class indicates that what follows is a description of a class. The word BankAccount is the name of the class. A name must begin with a letter and be a sequnce of letters or digits. A letter is defined as ‘A’–‘Z’, ‘a’–‘z’, ’ ’ and ‘$’. Names are case sensitive, so Rectangle is not the same as rectangle. As already mentioned, it is customary for the names of classes to begin with a capital letter. On line 2 there is an opening brace { which is matched by a closing brace } on the last line. Thus a Java source file has the general form class name { description-of-class } 3.1 Comments A comment is any string of characters following // up to the end of that line. So // INSTANCE VARIABLES: is an example of a comment. A comment does not affect what the program does. Comments are there for the benefit of any humans that read the program (including the programmer). They are crucial for long programs since even the programmer may forget what various parts of the program do. Another way to introduce a comment is to enclose it between /* and */. This second sort of comment can run over several lines, but cannot contain the pair of characters */ of course. I will not use this sort of comment ver often in these notes, but you may use them if you wish. 3.2 Instance Variables We have to explicitly declare the instance variables of a class. To declare an instance variable, we must define its type and assign it a name. In the BankAccount class, the statement double balance; declares an instance variable called balance whose type is double. (Roughly speaking, a double is a way of representing a real number on the computer. We’ll say more about types and doubles later.) The computer stores objects in its memory. In any object that is an instance BankAccount, there will be an area of memory set asside to hold a double, and this double may be accesssed using the name balance. Different instance variables in a class must have different names. 4 3.3 Methods Recall that a method is something that does something to an object. They are a little similar to procedures and functions in Maple. It should be straightforward to see what the methods in the BankAccount class do. Let’s analyze what we want a method to do in general. • (Optional) start with some input data. • Change the state of the object and/or perform some calculation. • (Optional) Return an answer. A method specification in Java has the following general form: returntype methodname(parameter-list) { // here go the statements that actually do something } The returntype specifies the type of answer that a method returns. If we don’t want a method to return an answer, then we specifiy the return type void. In the BankAccount class, the credit method is an example of a method that alters the state of a BankAccount object but does not return a value. The getBalance method is an example of a method that does return a value. Here is another example of a method that would be useful in the class BankAccount. boolean isOverdrawn() { if(balance < 0) { return true; } else { return false; } } Let’s take a look at this method. A boolean can have two values, true and false. (More about booleans later.) When the computer encounters a return statement, it stops executing the method and returns a value. The parameter list specifies the input data to the method. For each item of input data to a method, we must specify its type and give it a name. Here is another example of a method, this one accepts two doubles as input. // calculate the maximum of a and b double max(double a, double b) { if(a > b) { return a; 5 } else { return b; } } Notice that in the parameter list, we must separate the parameters with a comma. You will notice that in all these examples, matching braces {...} are aligned under each other. This is very good practice and recommended for all your programs. (Without a convention like this it would be easy to make errors, thinking that an open-brace matched the wrond close-brace.) You probably also have noticed that statements like return a; require a semicolon after them, as do declarations of instance variables.
Recommended publications
  • Multi-Return Function Call
    To appear in J. Functional Programming 1 Multi-return Function Call OLIN SHIVERS and DAVID FISHER College of Computing Georgia Institute of Technology (e-mail: fshivers,[email protected]) Abstract It is possible to extend the basic notion of “function call” to allow functions to have multiple re- turn points. This turns out to be a surprisingly useful mechanism. This article conducts a fairly wide-ranging tour of such a feature: a formal semantics for a minimal λ-calculus capturing the mechanism; motivating examples; monomorphic and parametrically polymorphic static type sys- tems; useful transformations; implementation concerns and experience with an implementation; and comparison to related mechanisms, such as exceptions, sum-types and explicit continuations. We conclude that multiple-return function call is not only a useful and expressive mechanism, at both the source-code and intermediate-representation levels, but also quite inexpensive to implement. Capsule Review Interesting new control-flow constructs don’t come along every day. Shivers and Fisher’s multi- return function call offers intriguing possibilities—but unlike delimited control operators or first- class continuations, it won’t make your head hurt or break the bank. It might even make you smile when you see the well-known tail call generalized to a “semi-tail call” and a “super-tail call.” What I enjoyed the most was the chance to reimagine several of my favorite little hacks using the new mechanism, but this unusually broad paper offers something for everyone: the language designer, the theorist, the implementor, and the programmer. 1 Introduction The purpose of this article is to explore in depth a particular programming-language mech- anism: the ability to specify multiple return points when calling a function.
    [Show full text]
  • Aeroscript Programming Language Reference
    AeroScript Programming Language Reference Table of Contents Table of Contents 2 Structure of a Program 5 Comments 6 Preprocessor 7 Text Replacement Macro (#define/#undef) 7 Source File Inclusion (#include) 8 Conditional Inclusion (#if/#ifdef/#ifndef) 8 Data Types and Variables 11 Fundamental Data Types 11 Fundamental Numeric Data Types 11 Fundamental String Data Type 11 Fundamental Axis Data Type 11 Fundamental Handle Data Type 12 Aggregate Data Types 12 Array Data Types 12 Structure Data Types 13 Enumerated Data Types 14 Variables 15 Variable Declaration 15 Variable Names 15 Numeric, Axis, and Handle Variable Declaration Syntax 15 String Variable Declaration Syntax 15 Syntax for Declaring Multiple Variables on the Same Line 16 Array Variable Declaration Syntax 16 Structure Variable Definition and Declaration Syntax 16 Definition Syntax 16 Declaration Syntax 17 Member Access Syntax 17 Enumeration Variable Definition and Declaration Syntax 18 Definition 18 Declaration Syntax 19 Enumerator Access Syntax 19 Variable Initialization Syntax 20 Basic Variable Initialization Syntax 20 Array Variable Initialization Syntax 21 Structure Variable Initialization Syntax 22 Enumeration Variable Initialization Syntax 22 Variable Scope 23 Controller Global Variables 23 User-Defined Variables 23 User-Defined Variable Accessibility 23 User-Defined Local Variable Declaration Location 25 Variable Data Type Conversions 26 Properties 27 Property Declaration 27 Property Names 27 Property Declaration 28 Property Usage 28 Expressions 29 Literals 29 Numeric Literals
    [Show full text]
  • The Cool Reference Manual∗
    The Cool Reference Manual∗ Contents 1 Introduction 3 2 Getting Started 3 3 Classes 4 3.1 Features . 4 3.2 Inheritance . 5 4 Types 6 4.1 SELF TYPE ........................................... 6 4.2 Type Checking . 7 5 Attributes 8 5.1 Void................................................ 8 6 Methods 8 7 Expressions 9 7.1 Constants . 9 7.2 Identifiers . 9 7.3 Assignment . 9 7.4 Dispatch . 10 7.5 Conditionals . 10 7.6 Loops . 11 7.7 Blocks . 11 7.8 Let . 11 7.9 Case . 12 7.10 New . 12 7.11 Isvoid . 12 7.12 Arithmetic and Comparison Operations . 13 ∗Copyright c 1995-2000 by Alex Aiken. All rights reserved. 1 8 Basic Classes 13 8.1 Object . 13 8.2 IO ................................................. 13 8.3 Int................................................. 14 8.4 String . 14 8.5 Bool . 14 9 Main Class 14 10 Lexical Structure 14 10.1 Integers, Identifiers, and Special Notation . 15 10.2 Strings . 15 10.3 Comments . 15 10.4 Keywords . 15 10.5 White Space . 15 11 Cool Syntax 17 11.1 Precedence . 17 12 Type Rules 17 12.1 Type Environments . 17 12.2 Type Checking Rules . 18 13 Operational Semantics 22 13.1 Environment and the Store . 22 13.2 Syntax for Cool Objects . 24 13.3 Class definitions . 24 13.4 Operational Rules . 25 14 Acknowledgements 30 2 1 Introduction This manual describes the programming language Cool: the Classroom Object-Oriented Language. Cool is a small language that can be implemented with reasonable effort in a one semester course. Still, Cool retains many of the features of modern programming languages including objects, static typing, and automatic memory management.
    [Show full text]
  • C Programming Tutorial
    C Programming Tutorial C PROGRAMMING TUTORIAL Simply Easy Learning by tutorialspoint.com tutorialspoint.com i COPYRIGHT & DISCLAIMER NOTICE All the content and graphics on this tutorial are the property of tutorialspoint.com. Any content from tutorialspoint.com or this tutorial may not be redistributed or reproduced in any way, shape, or form without the written permission of tutorialspoint.com. Failure to do so is a violation of copyright laws. This tutorial may contain inaccuracies or errors and tutorialspoint provides no guarantee regarding the accuracy of the site or its contents including this tutorial. If you discover that the tutorialspoint.com site or this tutorial content contains some errors, please contact us at [email protected] ii Table of Contents C Language Overview .............................................................. 1 Facts about C ............................................................................................... 1 Why to use C ? ............................................................................................. 2 C Programs .................................................................................................. 2 C Environment Setup ............................................................... 3 Text Editor ................................................................................................... 3 The C Compiler ............................................................................................ 3 Installation on Unix/Linux ............................................................................
    [Show full text]
  • Functions in C
    Functions in C Fortran 90 has three kinds of units: a program unit, subroutine units and function units. In C, all units are functions. For example, the C counterpart to the Fortran 90 program unit is the function named main: #include <stdio.h> main () /* main */ f float w, x, y, z; int i, j, k; w = 0.5; x = 5.0; y = 10.0; z = x + y * w; i = j = k = 5; printf("x = %f, y = %f, z = %f n", x, y, z); printf("i = %d, j = %d, k = %dnn", i, j, k); /* main */ n g Every C program must have a function named main; it’s the func- tion where the program begins execution. C also has a bunch of standard library functions, which are functions that come predefined for everyone to use. 1 Standard Library Functions in C1 C has a bunch of standard library functions that everyone gets to use for free. They are analogous to Fortran 90’s intrinsic functions, but they’re not quite the same. Why? Because Fortran 90’s intrinsic functions are built directly into the language, while C’s library functions are not really built into the language as such; you could replace them with your own if you wanted. Here’s some example standard library functions in C: Function Return Type Return Value #include file printf int number of characters written stdio.h Print (output) to standard output (the terminal) in the given format scanf int number of items input stdio.h Scan (input) from standard input (the keyboard) in the given format isalpha int Boolean: is argument a letter? ctype.h isdigit int Boolean: is argument a digit? ctype.h strcpy char [ ] string containing copy string.h Copy a string into another (empty) string strcmp int comparison of two strings string.h Lexical comparison of two strings; result is index in which strings differ: negative value if first string less than second, positive if vice versa, zero if equal sqrt float square root of argument math.h pow float 1st argument raised to 2nd argument math.h 1 Brian W.
    [Show full text]
  • Python 3 Types in the Wild:A Tale of Two Type Systems
    Python 3 Types in the Wild: A Tale of Two Type Systems Ingkarat Rak-amnouykit Daniel McCrevan Ana Milanova Rensselaer Polytechnic Institute Rensselaer Polytechnic Institute Rensselaer Polytechnic Institute New York, USA New York, USA New York, USA [email protected] [email protected] [email protected] Martin Hirzel Julian Dolby IBM TJ Watson Research Center IBM TJ Watson Research Center New York, USA New York, USA [email protected] [email protected] Abstract ACM Reference Format: Python 3 is a highly dynamic language, but it has introduced Ingkarat Rak-amnouykit, Daniel McCrevan, Ana Milanova, Martin a syntax for expressing types with PEP484. This paper ex- Hirzel, and Julian Dolby. 2020. Python 3 Types in the Wild: A Tale of Two Type Systems. In Proceedings of the 16th ACM SIGPLAN plores how developers use these type annotations, the type International Symposium on Dynamic Languages (DLS ’20), Novem- system semantics provided by type checking and inference ber 17, 2020, Virtual, USA. ACM, New York, NY, USA, 14 pages. tools, and the performance of these tools. We evaluate the https://doi.org/10.1145/3426422.3426981 types and tools on a corpus of public GitHub repositories. We review MyPy and PyType, two canonical static type checking 1 Introduction and inference tools, and their distinct approaches to type Dynamic languages in general and Python in particular1 analysis. We then address three research questions: (i) How are increasingly popular. Python is particularly popular for often and in what ways do developers use Python 3 types? machine learning and data science2. A defining feature of (ii) Which type errors do developers make? (iii) How do type dynamic languages is dynamic typing, which, essentially, for- errors from different tools compare? goes type annotations, allows variables to change type and Surprisingly, when developers use static types, the code does nearly all type checking at runtime.
    [Show full text]
  • The Grace Programming Language Draft Specification Version 0.5. 2025" (2015)
    Portland State University PDXScholar Computer Science Faculty Publications and Presentations Computer Science 2015 The Grace Programming Language Draft Specification ersionV 0.5. 2025 Andrew P. Black Portland State University, [email protected] Kim B. Bruce James Noble Follow this and additional works at: https://pdxscholar.library.pdx.edu/compsci_fac Part of the Programming Languages and Compilers Commons Let us know how access to this document benefits ou.y Citation Details Black, Andrew P.; Bruce, Kim B.; and Noble, James, "The Grace Programming Language Draft Specification Version 0.5. 2025" (2015). Computer Science Faculty Publications and Presentations. 140. https://pdxscholar.library.pdx.edu/compsci_fac/140 This Working Paper is brought to you for free and open access. It has been accepted for inclusion in Computer Science Faculty Publications and Presentations by an authorized administrator of PDXScholar. Please contact us if we can make this document more accessible: [email protected]. The Grace Programming Language Draft Specification Version 0.5.2025 Andrew P. Black Kim B. Bruce James Noble April 2, 2015 1 Introduction This is a specification of the Grace Programming Language. This specifica- tion is notably incomplete, and everything is subject to change. In particular, this version does not address: • James IWE MUST COMMIT TO CLASS SYNTAX!J • the library, especially collections and collection literals • static type system (although we’ve made a start) • module system James Ishould write up from DYLA paperJ • dialects • the abstract top-level method, as a marker for abstract methods, • identifier resolution rule. • metadata (Java’s @annotations, C] attributes, final, abstract etc) James Ishould add this tooJ Kim INeed to add syntax, but not necessarily details of which attributes are in language (yet)J • immutable data and pure methods.
    [Show full text]
  • BTE2313 Chapter 7: Function
    For updated version, please click on http://ocw.ump.edu.my BTE2313 Chapter 7: Function by Sulastri Abdul Manap Faculty of Engineering Technology [email protected] Objectives • In this chapter, you will learn about: 1. Create and apply user defined function 2. Differentiate between standard library functions and user defined functions 3. Able to use both types of functions Introduction • A function is a complete section (block) of C++ code with a definite start point and an end point and its own set of variables. • Functions can be passed data values and they can return data. • Functions are called from other functions, like main() to perform the task. • Two types of function: 1. User defined function: The programmer writes their own function to use in the program. 2. Standard library function: Function already exist in the C++ standard libraries http://www.cplusplus.com/reference/ Introduction (cont.) • Advantages of functions: Easier to solve complex task by dividing it into several smaller parts (structured programming) Functions separate the concept (what is done) from the implementation (how it is done) Functions can be called several times in the same program, allowing the code to be reused. Three Important Questions • “What is the function supposed to do? (Who’s job is it?” ) – If a function is to read all data from a file, that function should open the file, read the data, and close the file. • “What input values does the function need to do its job?” – If your function is supposed to calculate the volume of a pond, you’d need to give it the pond dimensions.
    [Show full text]
  • Generics in the Java Programming Language
    Generics in the Java Programming Language Gilad Bracha July 5, 2004 Contents 1 Introduction 2 2 Defining Simple Generics 3 3 Generics and Subtyping 4 4 Wildcards 5 4.1 Bounded Wildcards . 6 5 Generic Methods 7 6 Interoperating with Legacy Code 10 6.1 Using Legacy Code in Generic Code . 10 6.2 Erasure and Translation . 12 6.3 Using Generic Code in Legacy Code . 13 7 The Fine Print 14 7.1 A Generic Class is Shared by all its Invocations . 14 7.2 Casts and InstanceOf . 14 7.3 Arrays . 15 8 Class Literals as Run-time Type Tokens 16 9 More Fun with Wildcards 18 9.1 Wildcard Capture . 20 10 Converting Legacy Code to Use Generics 20 11 Acknowledgements 23 1 1 Introduction JDK 1.5 introduces several extensions to the Java programming language. One of these is the introduction of generics. This tutorial is aimed at introducing you to generics. You may be familiar with similar constructs from other languages, most notably C++ templates. If so, you’ll soon see that there are both similarities and important differences. If you are not familiar with look-a-alike constructs from elsewhere, all the better; you can start afresh, without unlearning any misconceptions. Generics allow you to abstract over types. The most common examples are con- tainer types, such as those in the Collection hierarchy. Here is a typical usage of that sort: List myIntList = new LinkedList(); // 1 myIntList.add(new Integer(0)); // 2 Integer x = (Integer) myIntList.iterator().next(); // 3 The cast on line 3 is slightly annoying.
    [Show full text]
  • AP Computer Science a Study Guide
    AP Computer Science A Study Guide AP is a registered trademark of the College Board, which was not involved in the production of, and does not endorse, this product. Key Exam Details The AP® Computer Science A course is equivalent to a first-semester, college-level course in computer science. The 3-hour, end-of-course exam is comprised of 44 questions, including 40 multiple-choice questions (50% of the exam) and 4 free-response questions (50% of the exam). The exam covers the following course content categories: • Primitive Types: 2.5%–5% of test questions • Using Objects: 5%–7.5% of test questions • Boolean Expressions and if Statements: 15%–17.5% of test questions • Iteration: 17.5%–22.5% of test questions • Writing Classes: 5%–7.5% of test questions • Array: 10%–15% of test questions • ArrayList: 2.5%–7.5% of test questions • 2D Array: 7.5%–10% of test questions • Inheritance: 5%–10% of test questions • Recursion: 5%–7.5% of test questions This guide provides an overview of the main tested subjects, along with sample AP multiple-choice questions that are similar to the questions you will see on test day. Primitive Types Around 2.5–5% of the questions you’ll see on the exam cover the topic of Primitive Types. Printing and Comments The System.out.print and System.out.println methods are used to send output for display on the console. The only difference between them is that the println method moves the cursor to a new line after displaying the given data, while the print method does not.
    [Show full text]
  • C Programming Basics
    C Programming Basics Ritu Arora Texas Advanced Computing Center November 7th, 2011 Overview of the Lecture • Writing a Basic C Program • Understanding Errors • Comments, Keywords, Identifiers, Variables • Standard Input and Output • Operators • Control Structures • Functions in C • Arrays, Structures • Pointers • Working with Files All the concepts are accompanied by examples. 2 How to Create a C Program? • Have an idea about what to program • Write the source code using an editor or an Integrated Development Environment (IDE) • Compile the source code and link the program by using the C compiler • Fix errors, if any • Run the program and test it • Fix bugs, if any 3 Write the Source Code: firstCode.c #include <stdio.h> int main(){ printf("Introduction to C!\n"); return(0); } 4 Understanding firstCode.c Preprocessor directive Name of the standard header #include <stdio.h> file to be included is specified within angular brackets Function’s return type Function name Function name is followed by parentheses – they int main(){ can be empty when no arguments are passed printf("Introduction to C!\n"); C language function for displaying information on the screen return(0); Keyword, command for returning function value } The contents of the functions are placed inside the curly braces Text strings are specified within "" and every statement is terminated by ; Newline character is specified by \n 5 Save-Compile-Link-Run • Save your program (source code) in a file having a “c” extension. Example, firstCode.c • Compile and Link your code (linking
    [Show full text]
  • Rules Reference Guide
    Rules Reference Guide Oracle® Health Sciences Central Designer Release 2.1.2 Part Number: E72237-01 Copyright © 2013, 2016, Oracle and/or its affiliates. All rights reserved. This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited. The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing. If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, the following notice is applicable: U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S. Government.
    [Show full text]