Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
22
Copyright Virtual University of Pakistan
26
Copyright Virtual University of Pakistan
LISP and Scheme are contemporary dialects of LISP and ML, Miranda, and
Haskell are
related languages.
ALGOL
ALGOL 58 1958 Search for a Universal Language
ALGOL stands for ALGOrithmic Language. It was designed in 1958. At that
time
FORTRAN had (barely) arrived for IBM 70x and was owned by IBM. Many
other
languages were being developed, all for specific machines. There was no
portable
language as all were machine-dependent. Also, there was no universal
language for
communicating algorithms.
ALGOL was thus designed to be a language that was close to mathematical
notation,
good for describing algorithms, and was machine independent. That is, it was
an
algorithmic language for use on all kinds of computers.
Salient features of the language are:
Concept of type was formalized
Names could have any length
Arrays could have any number of subscripts
Lower bound of an array could be defined
Parameters were separated by mode (in & out)
Subscripts were placed in brackets
Compound statements were introduced (begin ... end)
Semicolon as a statement separator was used
Assignment operator was :=
if had an else-if clause
It was actually not meant to be implemented, but variations of it were (MAD,
JOVIAL)
implemented. Although IBM was initially enthusiastic but vested interest in
FORTRAN
resulted in taking back all support by mid-1959.
Algol 60 - 1960
ALGOL 60 was a modified version of ALGOL 58. It added new features to the
language.
These included block structure (local scope), two parameter passing methods
value and
name, subprogram recursion, and stack-dynamic arrays run time size
definition and
space allocation. It did not have built-in I/O facility.
It was quite successful as it was the standard way to publish algorithms for
over 20 years.
All subsequent imperative languages are based on it. It was the first
machine-independent
language and the first language whose syntax was formally defined in BNF. It
also
impacted the hardware design.
It was never widely used, especially in U.S because there was no i/o support
and the
character set made programs non-portable. Also, it was too flexible and
hence was hard to
understand and implement. On top of that, IBM never supported it on their
machines
Introduction and Historical Background (Lecture 1-8) VU
27
Copyright Virtual University of Pakistan
28
By 1963 scientific users began to need more elaborate i/o, like COBOL had
and business
users began to need fl. pt. and arrays (MIS). It looked like many shops would
begin to
need two kinds of computers, languages, and support staff. This proposition
was
obviously too costly and the obvious solution was to build a new computer to
do both
kinds of applications and design a new language to do both kinds of
applications. Hence
PL/1 came into being.
PL/I was the first language to introduce unit-level concurrency, exception
handling,
pointer data type, and array cross sections.
The language was not a huge success because many new features were
poorly designed
and it was too large and too complex.
Early Dynamic Languages -Characterized by dynamic typing and dynamic storage
allocation
APL (A Programming Language) 1962
It was designed as a hardware description language (at IBM by Ken Iverson).
It was
highly expressive (many operators, for both scalars and arrays of various
dimensions) but
programs are very difficult to read - commonly known as write-only
language.
SNOBOL (1964)
It was designed as a string manipulation language (at Bell Labs by Farber,
Griswold, and
Polensky). It had powerful operators for string pattern matching but suffered
from poot
readability and maintainability.
Simula 67 1967 The first Object-oriented langauge
It was designed in Norway by Nygaard and Dahl, primarily for system
simulation. It was
based on ALGOL 60 and SIMULA I. Its primary contributions include the
concept of a
class which was the basis for data abstraction. Classes are structures that
include both
local data and functionality.
Pascal 1971 Simplicity by Design
Pascal was designed by Niklaus Wirth, who quit the ALGOL 68 committee
because he
didn't like the direction of that work. It was designed for teaching structured
programming. It was small and simple with nothing really new. Because of its
simplicity
and size it was, for almost two decades, the most widely used language for
teaching
programming in colleges.
C 1972 High-level system programming language
C was designed for systems programming at Bell Labs by Dennis Richie. It
evolved
primarily from B, but was also influenced by ALGOL 68. It had powerful set of
operators, but poor type checking. It initially spread through UNIX but
became very
popular in the academic circles because of its easy portability. Many modern
programming languages including C++, Java, and C# are direct descendents
of C.
COBOL
This article is about the compiled programming language. For other uses, see
COBOL (disambiguation).
This page has some issues
COBOL (, an acronym for common business-oriented language) is a compiled
computer programming language designed for business use. It is imperative,
procedural and, since 2002, object-oriented.
It was designed in 1959 by the Conference on Data Systems Languages
(CODASYL) and was largely based on previous programming language design
work by Grace Hopper, commonly referred to as "the (grand)mother of
COBOL". [2][3][4] It was created as part of a US Department of Defense
effort to create a portable programming language for data processing.
Intended as a temporary stopgap, the Department of Defense promptly
forced computer manufacturers to provide it, resulting in its widespread
adoption. [5] It was standardized in 1968 and has since been revised four
times. Expansions include support for structured and object-oriented
programming. The current standard is ISO/IEC 1989:2014. [6]
COBOL is primarily used in business, finance, and administrative systems for
companies and governments. In 1997, Gartner Group estimated that there
were a total of 200 billion lines of COBOL in existence which ran 80% of all
business programs. [7]
Background
Computer users and manufacturers were becoming concerned about the
rising cost of programming. A 1959 survey had found that in any data
processing installation, programming cost at least $800,000 and that
translating programs to run on new hardware would cost $600,000. In a time
where new programming languages were proliferating at an ever increasing
rate, the same survey suggested that if a common business-oriented
language were used, conversion would be far cheaper and faster. [8]
Grace Hopper, the inventor of FLOW-MATIC, apredecessor to COBOL.
Many logical flaws were found in COBOL 60, leading GE's Charles Katz to
warn that it could not be interpreted unambiguously. A reluctant short-term
committee enacted a total cleanup and, by March 1963, it was reported that
COBOL's syntax was as definable as ALGOL's, although semantic ambiguities
remained. [52]
Early COBOL compilers were primitive and slow. A 1962 US Navy evaluation
found compilation speeds of 311 statements per minute
COBOL-60 was replaced in 1961 by COBOL-61. This was then replaced by the
COBOL-61 Extended specifications in 1963 which introduced the sort and
report writer facilities.
COBOL-68
Efforts began to standardise COBOL to overcome incompatibilities between
versions. In late 1962, both ISO and the United States of America Standards
Institute (now ANSI) formed groups to create standards. ANSI produced USA
Standard COBOL X3.23 in August 1968 which became the cornerstone for
later versions. [58] This version was known as American National Standard
(ANS) COBOL and was adopted by ISO in 1972. [59]
COBOL-74
By 1970, COBOL had become the most widely used programming language
in the world. [60]
Independently of the ANSI committee, the CODASYL Programming Language
Committee was working on improving the language. They described new
versions in 1968, 1969, 1970 and 1973, including changes such as new interprogram communication, debugging and file merging facilities as well as
improved string-handling and library inclusion features
COBOL-85
In June 1978, work began on revising COBOL-74. The proposed standard
(commonly called COBOL-80) differed significantly from the previous one,
causing concerns about incompatibility and conversion costs. In January
1981, Joseph T. Brophy, Senior Vice-President of Travelers Insurance,
threatened to sue the standard committee because it was not upwards
compatible with COBOL-74. Mr. Brophy described previous conversions of
their 40 million line code base as "non-productive" and a "complete waste of
our programmer resources". [68] Later that year, the Data Processing
Management Association (DPMA) said it was "strongly opposed" to the new
standard, citing "prohibitive" conversion costs and enhancements that were
"forced on the user". [69][70]
In late 1985, ANSI published the revised standard. 60 features were changed
or deprecated and many [quantify] were added, such as: [74][75]
scope terminators ( END-IF , ENDPERFORM , END-READ ,etc.) nested subprograms
CONTINUE ,a no-operation statement
years unless ... integration with other languages and technologies can be
adopted". [89]
In 2006 and 2012, Computerworld surveys found that over 60% of
organizations used COBOL (more than C++ and Visual Basic .NET) and that
for half of those, COBOL was used for the majority of their internal software.
[90][91] 36% of managers said they planned to migrate from COBOL and
25% said they would like to if it was cheaper. Instead, some businesses have
migrated their systems from expensive mainframes to cheaper, more
modern systems, while maintaining their COBOL programs. [90]
Syntax
COBOL has an English-like syntax which is used to describe nearly everything
in a program. For example, a condition can be expressed as x IS GREATER
THAN
y or moreconciselyas x GREATER y or x > y . Morecomplexconditionscan be
"abbreviated" by removing repeated conditions and variables. For example, a
> b AND a > c OR a = d can be shortened to a > b AND c
OR = d .Asaconsequenceofthis English-like syntax, COBOL has over 300
keywords. [92] However, compiler extensions allow many implementations to
have far more: one implementation recognizes over 1,100 keywords. [93]
Some of the keywords are simple alternative or pluralized spellings of the
same word, which provides for more English-like statements and clauses;
e.g., the
Code format
COBOL can be written in two formats: fixed (the default) or free. In fixedformat, code must be aligned to fit in certain areas. Until COBOL 2002, these
were:
Name Column(s) Usage
Sequence number area
16 Originally used for card/line numbers, this area is ignored by the
compiler
Indicator area 7 The following characters are allowed here:
* a comment line
/ a comment line which will be printed on a new page of a source listing
- a continuation line where words or literals from the previous line are
continued
Environment division
The environment division contains the configuration section and the inputoutput section. The configuration section is used to specify variable features
such as currency signs, locales and character sets. The input-output section
contains file-related information.
Files
COBOL supports three file formats, or organizations: sequential, indexed and
relative. In sequential files, records are contiguous and must be traversed
sequentially, similarly to a linked list. Indexed files have one or more indexes
which allow records to be randomly accessed and which can be sorted on
them. Each record must have a unique key, but alternate record keys need
not be unique.
Data division
The data division is split into six sections which declare different items: the
file section, for file records; the working-storage section, for static variables;
the local-storage section, for automatic variables; the linkage section, for
parameters and the return value; the report section and the screen section,
for text-based user interfaces.
Aggregated data
Data items in COBOL are declared hierarchically through the use of levelnumbers which indicate if a data item is part of another. An item with a
higher level-number is subordinate to an item with a lower one. Data items
containing subordinate items which are not subordinate to another item are
called records. Items that have no subordinate data items are called
elementary items; those that do are called group items. [102]
01 some-record. 05 num PIC 9(10). 05 the-date. 10 the-year PIC 9(4). 10 themonth PIC 99. 10 the-day PIC 99.
In the above example, num and the-date are subordinate to the record somerecord , while the-year , the-month ,and the-day are part of the group item
the-date .
Level-numbers used to describe standard data items are between 01 and 49.
Subordinate items can be disambiguated with the IN (or OF )
keyword.Forexample, consider the example code above along with the
following example:
01 sale-date. 05 the-year PIC 9(4). 05 the-month PIC 99. 05 the-day PIC 99.
The names the-year , the-month , and
the-day areambiguousbythemselves, since more than one data item is
defined with those names. To specify a particular data item, for instance one
of the items contained within the sale-date group,the programmer would use
the-year IN saledate (or itssemanticequivalent the-year
OF sale-date ).(Thissyntaxissimilar to the "dot notation" supported by most
C-like and other object-oriented programming languages.)
Other data levels
A level-number of 66 is used to declare a re-grouping of previously defined
items, irrespective of how those items are structured. [103]
01 customer-record. 05 cust-key PIC X(10). 05 cust-name. 10 cust-first-name
PIC X(30). 10 cust-last-name PIC X(30). 05 cust-dob PIC 9(8). 05 cust-balance
PIC 9(7)V99.
66 cust-personal-details RENAMES cust-name THRU cust-dob. 66 cust-alldetails RENAMES cust-name THRU cust-balance.
A 77 level-number indicates the item is stand-alone, and in such situations is
equivalent to the level-number 01. For example, the following code declares
two 77-level data items, property-name and
sales-region ,whicharenon-group data items that are independent of (not
subordinate to) any other data items:
Data types
Standard COBOL provides the following data types: [105]
Data type Sample declaration Notes
Alphabetic PIC
A(30
PICTURE clause
A PICTURE (or PIC )clauseisa stringof characters, each of which represents a
portion of the data item. Some picture
Pascal (programming language)
Pascal programs start with the program keyword with a list of external file
descriptors as parameters [14] (not required in Turbo Pascal etc.); then
follows the main block bracketed by the begin and end keywords. Semicolons
separate statements, and the full stop (i.e., a period) ends the whole
program (or unit). Letter case is ignored in Pascal source.
Here is an example of the source code in use for a very simple "Hello world"
program:
Program HelloWorld; Begin WriteLn('Hello world!') {no ";" is required after the
last statement of a block -adding one adds a "null statement" to the
program} End.
Data types
A type in Pascal, and in several other popular programming languages,
defines a variable in such a way that it defines a range of values which the
variable is capable of storing, and it also defines a set of operations that are
permissible to be performed on variables of that type. The predefined types
are:
Data type Type of values which the variable is capable of storing
integer integer (whole) numbers
real floating-point numbers
boolean the value True or False
char a single character from an ordered character set
string a group or "string" of characters
Subrange types
Subranges of any ordinal data type (any simple type except real) can also be
made:
var x : 1..10; y : 'a'..'z';
Set types
In contrast with other programming languages from its time, Pascal supports
a set type:
var Set1 : set of 1..10; Set2 : set of 'a'..'z';
A set is a fundamental concept for modern mathematics, and they may be
used in many algorithms. Such a feature is useful and may be faster than an
equivalent construct in a language that does not support sets. For example,
for many Pascal compilers:
if i in [5..10] then ...
executes faster than:
if (i > 4) and (i < 11) then ...
Pointer types
Pascal supports the use of pointers:
type pNode = ^Node; Node = record a : integer; b : char; c : pNode {extra
semicolon not strictly required} end; var NodePtr : pNode; IntPtr : ^integer;
Control structures
Pascal is a structured programming language, meaning that the flow of
control is structured into standard statements, usually without 'goto'
commands.
are created every day. Java is fast, secure, and reliable. From laptops to datacenters, game consoles to
scientific supercomputers, cell phones to the Internet, Java is everywhere!
Java is a general-purpose computer programming language that is concurrent, class-based, objectoriented,[10] and specifically designed to have as few implementation dependencies as possible. It is
intended to let application developers "write once, run anywhere" (WORA),[11] meaning that code that
runs on one platform does not need to be recompiled to run on another.[12] Java applications are
typically compiled to bytecode that can run on any Java virtual machine (JVM) regardless
of computer architecture. Java is, as of 2015, one of the most popular programming languages in
use, particularly for client-server web applications, with a reported 9 million developers. [13][14] Java was
originally developed by James Gosling at Sun Microsystems (which has since merged into Oracle
Corporation) and released in 1995 as a core component of Sun Microsystems' Java platform. The
language derives much of its syntax from C and C++, but it has fewer low-level facilities than either
of them.
The original and reference implementation Java compilers, virtual machines, and class libraries were
originally released by Sun under proprietary licences. As of May 2007, in compliance with the
specifications of the Java Community Process, Sun relicensed most of its Java technologies under
the GNU General Public License. Others have also developed alternative implementations of these
Sun technologies, such as the GNU Compiler for Java (bytecode compiler), GNU
Classpath (standard libraries), and IcedTea-Web (browser plugin for applets).
History
James Gosling, Mike Sheridan, and Patrick Naughton initiated the Java language project in June
1991.[15] Java was originally designed for interactive television, but it was too advanced for the digital
cable television industry at the time.[16] The language was initially called Oak after anoak tree that
stood outside Gosling's office. Later the project went by the name Green and was finally
renamed Java, from Java coffee,[17] said to be consumed in large quantities by the language's
creators.[citation needed] Gosling designed Java with a C/C++-style syntax that system and application
programmers would find familiar.[18]
Sun Microsystems released the first public implementation as Java 1.0 in 1995.[1] It promised "Write
Once, Run Anywhere" (WORA), providing no-cost run-times on popular platforms. Fairly secure and
featuring configurable security, it allowed network- and file-access restrictions. Major web
browsers soon incorporated the ability to run Java applets within web pages, and Java quickly
became popular. The Java 1.0 compiler was re-written in Java by Arthur van Hoff to comply strictly
with the Java 1.0 language specification.[19] With the advent of Java 2 (released initially as J2SE 1.2
in December 1998 1999), new versions had multiple configurations built for different types of
platforms. J2EE included technologies and APIs for enterprise applications typically run in server
environments, while J2ME featured APIs optimized for mobile applications. The desktop version was
renamed J2SE. In 2006, for marketing purposes, Sun renamed new J2 versions as Java EE, Java
ME, and Java SE, respectively.
In 1997, Sun Microsystems approached the ISO/IEC JTC 1 standards body and later the Ecma
International to formalize Java, but it soon withdrew from the process.[20] Java remains a de
facto standard, controlled through the Java Community Process.[21] At one time, Sun made most of its
Java implementations available without charge, despite their proprietary software status. Sun
generated revenue from Java through the selling of licenses for specialized products such as the
Java Enterprise System.
On November 13, 2006, Sun released much of Java as free and open-source software, (FOSS),
under the terms of the GNU General Public License (GPL). On May 8, 2007, Sun finished the
process, making all of Java's core code available under free software/open-source distribution terms,
aside from a small portion of code to which Sun did not hold the copyright. [22]
Sun's vice-president Rich Green said that Sun's ideal role with regard to Java was as an
"evangelist".[23] Following Oracle Corporation's acquisition of Sun Microsystems in 20092010,
Oracle has described itself as the "steward of Java technology with a relentless commitment to
fostering a community of participation and transparency".[24] This did not prevent Oracle from filing a
lawsuit against Google shortly after that for using Java inside the Android SDK (see Google section
below). Java software runs on everything fromlaptops to data centers, game consoles to
scientific supercomputers. There are 930 million Java Runtime Environment downloads each year
and over 3 billion mobile phones run Java.[25] On April 2, 2010, James Gosling resigned from Oracle.
[26]
Principles
There were five primary goals in the creation of the Java language:[12]
1. It must be "simple, object-oriented and familiar"
2. It must be "robust and secure"
3. It must be "architecture-neutral and portable"
4. It must execute with "high performance"
5. It must be "interpreted, threaded, and dynamic"
Versions
Major release versions of Java, along with their release dates:
Practices[edit]
Java platform[edit]
Main articles: Java (software platform) and Java virtual machine
One design goal of Java is portability, which means that programs written for the Java platform must
run similarly on any combination of hardware and operating system with adequate runtime support.
This is achieved by compiling the Java language code to an intermediate representation called Java
bytecode, instead of directly to architecture-specific machine code. Java bytecode instructions are
analogous to machine code, but they are intended to be executed by a virtual machine (VM) written
specifically for the host hardware. End users commonly use a Java Runtime Environment (JRE)
installed on their own machine for standalone Java applications, or in a web browser for
Java applets.
Standardized libraries provide a generic way to access host-specific features such as
graphics, threading, and networking.
A major benefit of using bytecode is porting. However, the overhead of interpretation means that
interpreted programs almost always run more slowly than programs compiled to native executables
would. Just-in-Time (JIT) compilers were introduced from an early stage that compile bytecodes to
machine code during runtime.
Implementations[edit]
See also: Free Java implementations
Oracle Corporation is the current owner of the official implementation of the Java SE platform,
following their acquisition of Sun Microsystems on January 27, 2010. This implementation is based
on the original implementation of Java by Sun. The Oracle implementation is available for Microsoft
Windows, Mac OS X, Linux and Solaris. Because Java lacks any formal standardization recognized
by Ecma International, ISO/IEC, ANSI, or other third-party standards organization, the Oracle
implementation is the de facto standard.
The Oracle implementation is packaged into two different distributions: The Java Runtime
Environment (JRE) which contains the parts of the Java SE platform required to run Java programs
and is intended for end users, and the Java Development Kit (JDK), which is intended for software
developers and includes development tools such as the Java compiler, Javadoc, Jar, and
a debugger.
OpenJDK is another notable Java SE implementation that is licensed under the GNU GPL. The
implementation started when Sun began releasing the Java source code under the GPL. As of Java
SE 7, OpenJDK is the official Java reference implementation.
The goal of Java is to make all implementations of Java compatible. Historically, Sun's trademark
license for usage of the Java brand insists that all implementations be "compatible". This resulted in
a legal dispute with Microsoft after Sun claimed that the Microsoft implementation did not
support RMI or JNI and had added platform-specific features of their own. Sun sued in 1997, and in
2001 won a settlement of US$20 million, as well as a court order enforcing the terms of the license
from Sun.[27] As a result, Microsoft no longer ships Windows with Java.
Platform-independent Java is essential to Java EE, and an even more rigorous validation is required
to certify an implementation. This environment enables portable server-side applications.
Examples[edit]
Hello World[edit]
The traditional "Hello, world!" program can be written in Java as:[36]
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!"); // Prints the string to the
console.
}
}
To compare this to other programming languages see the list of "Hello World!" program examples.
Source files must be named after the public class they contain, appending the suffix .java , for
example, HelloWorldApp.java . It must first be compiled into bytecode, using aJava compiler,
producing a file named HelloWorldApp.class . Only then can it be executed, or 'launched'. The
Java source file may only contain one public class, but it can contain multiple classes with other than
public access and any number of public inner classes. When the source file contains multiple
classes, make one class 'public' and name the source file with that public class name.
A class that is not declared public may be stored in any .java file. The compiler will generate a
class file for each class defined in the source file. The name of the class file is the name of the class,
with .class appended. For class file generation, anonymous classes are treated as if their name were
the concatenation of the name of their enclosing class, a $, and an integer.
The keyword public denotes that a method can be called from code in other classes, or that a
class may be used by classes outside the class hierarchy. The class hierarchy is related to the name
of the directory in which the .java file is located.
The keyword static in front of a method indicates a static method, which is associated only with
the class and not with any specific instance of that class. Only static methods can be invoked without
a reference to an object. Static methods cannot access any class members that are not also static.
The keyword void indicates that the main method does not return any value to the caller. If a Java
program is to exit with an error code, it must call System.exit() explicitly.
The method name " main " is not a keyword in the Java language. It is simply the name of the
method the Java launcher calls to pass control to the program. Java classes that run in managed
environments such as applets and Enterprise JavaBeans do not use or need a main() method. A
Java program may contain multiple classes that have main methods, which means that the VM
needs to be explicitly told which class to launch from.
The main method must accept an array of String objects. By convention, it is referenced
as args although any other legal identifier name can be used. Since Java 5, the main method can
also use variable arguments, in the form of public static void main(String... args) ,
allowing the main method to be invoked with an arbitrary number of String arguments. The effect
of this alternate declaration is semantically identical (the args parameter is still an array
of String objects), but it allows an alternative syntax for creating and passing the array.
The Java launcher launches Java by loading a given class (specified on the command line or as an
attribute in a JAR) and starting its public static void main(String[]) method. Stand-alone
programs must declare this method explicitly. The String[] args parameter is
an array of String objects containing any arguments passed to the class. The parameters
to main are often passed by means of a command line.
Printing is part of a Java standard library: The System class defines a public static field called out .
The out object is an instance of the PrintStream class and provides many methods for printing
data to standard out, including println(String) which also appends a new line to the passed
string.
The string "Hello World!" is automatically converted to a String object by the compiler.
// OddEven.java
import javax.swing.JOptionPane;
public class OddEven {
private int userInput; // a whole number("int" means integer)
/**
* This is the constructor method. It gets called when an object of
the OddEven type
* is being created.
*/
public OddEven() {
/*
* In most Java programs constructors can initialize objects with
default values, or create
* other objects that this object might use to perform its
functions. In some Java programs, the
* constructor may simply be an empty function if nothing needs to
be initialized prior to the
* functioning of the object. In this program's case, an empty
constructor would suffice.
* A constructor must exist; however, if the user doesn't put one
in then the compiler
* will create an empty one.
*/
}
/**
* This is the main method. It gets called when this class is run
through a Java interpreter.
* @param args command line arguments (unused)
*/
public static void main(final String[] args) {
/*
* This line of code creates a new instance of this class called
"number" (also known as an
* Object) and initializes it by calling the constructor. The next
line of code calls
* the "showDialog()" method, which brings up a prompt to ask you
for a number.
*/
OddEven number = new OddEven();
number.showDialog();
}
public void showDialog() {
/*
* "try" makes sure nothing goes wrong. If something does,
* the interpreter skips to "catch" to see what it should do.
*/
try {
/*
* The code below brings up a JOptionPane, which is a dialog
box
* The String returned by the "showInputDialog()" method is
converted into
* an integer, making the program treat it as a number instead
of a word.
* After that, this method calls a second method, calculate()
that will
* display either "Even" or "Odd."
*/
userInput =
Integer.parseInt(JOptionPane.showInputDialog("Please enter a number."));
calculate();
} catch (final NumberFormatException e) {
/*
* Getting in the catch block means that there was a problem
with the format of
* the number. Probably some letters were typed in instead of
a number.
*/
System.err.println("ERROR: Invalid input. Please type in a
numerical value.");
}
}
/**
* When this gets called, it sends a message to the interpreter.
* The interpreter usually shows it on the command prompt (For Windows
users)
The import statement imports the JOptionPane class from the javax.swing package.
The OddEven class declares a single private field of type int named userInput .
Every instance of the OddEven class has its own copy of the userInput field. The private
declaration means that no other class can access (read or write) the userInput field.
OddEven() is a public constructor. Constructors have the same name as the enclosing
class they are declared in, and unlike a method, have no return type. A constructor is used to
initialize an object that is a newly created instance of the class.
The calculate() method is declared without the static keyword. This means that the
method is invoked using a specific instance of the OddEven class. (The referenceused to invoke
the method is passed as an undeclared parameter of type OddEven named this .) The method
tests the expression userInput % 2 == 0 using the if keyword to see if the remainder of
dividing the userInput field belonging to the instance of the class by two is zero. If this
expression is true, then it prints Even; if this expression is false it prints Odd.
(The calculate method can be equivalently accessed as this.calculate and
the userInput field can be equivalently accessed as this.userInput , which both explicitly
use the undeclared this parameter.)
the main method named number . This variable can hold a reference to an object of
type OddEven . The declaration initializes number by first creating an instance of
the OddEven class, using the new keyword and the OddEven() constructor, and then
assigning this instance to the variable.
Special classes[edit]
This article contains instructions, advice, or how-to content. The purpose of
Wikipedia is to present facts, not to train. Please help improve this article either by
rewriting the how-to content or by moving it
to Wikiversity, Wikibooks or Wikivoyage(January 2012)
Applet[edit]
Main article: Java applet
Java applets are programs that are embedded in other applications, typically in a Web page
displayed in a web browser.
// Hello.java
import javax.swing.JApplet;
import java.awt.Graphics;
public class Hello extends JApplet {
public void paintComponent(final Graphics g) {
g.drawString("Hello, world!", 65, 95);
}
}
The import statements direct the Java compiler to include
the javax.swing.JApplet and java.awt.Graphics classes in the compilation. The import
statement allows these classes to be referenced in the source code using the simple class
name (i.e. JApplet ) instead of the fully qualified class name (FQCN, i.e. javax.swing.JApplet ).
The Hello class extends (subclasses) the JApplet (Java Applet) class; the JApplet class
provides the framework for the host application to display and control thelifecycle of the applet.
The JApplet class is a JComponent (Java Graphical Component) which provides the applet with
the capability to display a graphical user interface (GUI) and respond to user events.
The Hello class overrides the paintComponent(Graphics) method (additionally indicated with
the annotation, supported as of JDK 1.5, Override ) inherited from the Container superclass to
provide the code to display the applet. The paintComponent() method is passed
a Graphics object that contains the graphic context used to display the applet.
The paintComponent() method calls the graphic context drawString(String, int,
int) method to display the "Hello, world!" string at a pixeloffset of ( 65, 95 ) from the upper-left
The host application, typically a Web browser, instantiates the Hello applet and creates
an AppletContext for the applet. Once the applet has initialized itself, it is added to the AWT
display hierarchy. The paintComponent() method is called by the AWT event dispatching
thread whenever the display needs the applet to draw itself.
Servlet[edit]
Main article: Java Servlet
Java Servlet technology provides Web developers with a simple, consistent mechanism for
extending the functionality of a Web server and for accessing existing business systems. Servlets
are server-side Java EE components that generate responses (typically HTML pages) to requests
(typically HTTP requests) from clients. A servlet can almost be thought of as an applet that runs on
the server sidewithout a face.
// Hello.java
import java.io.*;
import javax.servlet.*;
public class Hello extends GenericServlet {
public void service(final ServletRequest request, final
ServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
final PrintWriter pw = response.getWriter();
try {
pw.println("Hello, world!");
} finally {
pw.close();
}
}
}
The import statements direct the Java compiler to include all the public classes
and interfaces from the java.io and javax.servlet packages in the compilation. Packages
make Java well suited for large scale applications.
The Hello class extends the GenericServlet class; the GenericServlet class provides the
interface for the server to forward requests to the servlet and control the servlet's lifecycle.
The Hello class overrides the service(ServletRequest, ServletResponse) method defined
by the Servlet interface to provide the code for the service request handler.
The service() method is passed: a ServletRequest object that contains the request from the
client and a ServletResponse object used to create the response returned to the client.
The service() method declares that
it throws the exceptions ServletException and IOException if a problem prevents it from
responding to the request.
The setContentType(String) method in the response object is called to set the MIME content
type of the returned data to "text/html". The getWriter() method in the response returns
a PrintWriter object that is used to write the data that is sent to the client.
The println(String) method is called to write the "Hello, world!" string to the response and
then the close() method is called to close the print writer, which causes the data that has been
written to the stream to be returned to the client.
JavaServer Pages[edit]
Main article: JavaServer Pages
JavaServer Pages (JSP) are server-side Java EE components that generate responses,
typically HTML pages, to HTTP requests from clients. JSPs embed Java code in an HTML page by
using the special delimiters <% and %> . A JSP is compiled to a Java servlet, a Java application in its
own right, the first time it is accessed. After that, the generated servlet creates the response.
Swing application[edit]
Main article: Swing (Java)
Swing is a graphical user interface library for the Java SE platform. It is possible to specify a different
look and feel through the pluggable look and feel system of Swing. Clones
ofWindows, GTK+ and Motif are supplied by Sun. Apple also provides an Aqua look and feel for Mac
OS X. Where prior implementations of these looks and feels may have been considered lacking,
Swing in Java SE 6 addresses this problem by using more native GUI widget drawing routines of the
underlying platforms.
This example Swing application creates a single window with "Hello, world!" inside:
// Hello.java (Java SE 5)
import javax.swing.*;
public class Hello extends JFrame {
public Hello() {
super("hello");
super.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
super.add(new JLabel("Hello, world!"));
super.pack();
super.setVisible(true);
}
public static void main(final String[] args) {
new Hello();
}
}
The first import includes all the public classes and interfaces from the javax.swing package.
The Hello class extends the JFrame class; the JFrame class implements a window with a title
bar and a close control.
The Hello() constructor initializes the frame by first calling the superclass constructor, passing the
parameter "hello" , which is used as the window's title. It then calls
the setDefaultCloseOperation(int) method inherited from JFrame to set the default operation
when the close control on the title bar is selected to WindowConstants.EXIT_ON_CLOSE this
causes the JFrame to be disposed of when the frame is closed (as opposed to merely hidden),
which allows the Java virtual machine to exit and the program to terminate. Next, a JLabel is
created for the string "Hello, world!" and the add(Component) method inherited from
the Container superclass is called to add the label to the frame. The pack() method inherited
from the Window superclass is called to size the window and lay out its contents.
The main() method is called by the Java virtual machine when the program starts. It instantiates a
new Hello frame and causes it to be displayed by calling the setVisible(boolean) method
inherited from the Component superclass with the boolean parameter true . Once the frame is
displayed, exiting the main method does not cause the program to terminate because the
AWT event dispatching thread remains active until all of the Swing top-level windows have been
disposed.
Generics[edit]
Main article: Generics in Java
In 2004, generics were added to the Java language, as part of J2SE 5.0. Prior to the introduction of
generics, each variable declaration had to be of a specific type. For container classes, for example,
this is a problem because there is no easy way to create a container that accepts only specific types
of objects. Either the container operates on all subtypes of a class or interface, usually Object , or a
different container class has to be created for each contained class. Generics allow compile-time
type checking without having to create many container classes, each containing almost identical
code. In addition to enabling more efficient code, certain runtime exceptions are converted to
compile-time errors, a characteristic known as type safety.
Criticism[edit]
Main article: Criticism of Java
Criticisms directed at Java include the implementation of generics,[39] speed,[40] the handling of
unsigned numbers,[41] the implementation of floating-point arithmetic,[42] and a history of security
vulnerabilities in the primary Java VM implementation HotSpot.[43]
Documentation[edit]
Graph theory
From Wikipedia, the free encyclopedia
This article is about sets of vertices connected by edges. For graphs of mathematical functions,
see Graph of a function. For other uses, see Graph (disambiguation).
A drawing of a graph
In mathematics and computer science, graph theory is the study of graphs, which are mathematical
structures used to model pairwise relations between objects. A "graph" in this context is made up of
"vertices" or "nodes" and lines called edges that connect them. A graph may be undirected, meaning
that there is no distinction between the two vertices associated with each edge, or its edges may
be directed from one vertex to another; see graph (mathematics) for more detailed definitions and for
other variations in the types of graph that are commonly considered. Graphs are one of the prime
objects of study in discrete mathematics.
Refer to the glossary of graph theory for basic definitions in graph theory.
Definitions[edit]
Definitions in graph theory vary. The following are some of the more basic ways of defining graphs
and related mathematical structures.
Graph[edit]
In the most common sense of the term,[1] a graph is an ordered pair G = (V, E) comprising
a set V of vertices or nodes together with a set E of edges or lines, which are 2-element subsets
of V (i.e., an edge is related with two vertices, and the relation is represented as an unordered pair of
the vertices with respect to the particular edge). To avoid ambiguity, this type of graph may be
described precisely as undirected and simple.
Other senses of graph stem from different conceptions of the edge set. In one more generalized
notion,[2] E is a set together with a relation of incidence that associates with each edge two vertices.
In another generalized notion, E is a multiset of unordered pairs of (not necessarily distinct) vertices.
Many authors call this type of object a multigraph or pseudograph.
All of these variants and others are described more fully below.
The vertices belonging to an edge are called the ends, endpoints, or end vertices of the edge. A
vertex may exist in a graph and not belong to an edge.
V and E are usually taken to be finite, and many of the well-known results are not true (or are rather
different) for infinite graphs because many of the arguments fail in theinfinite case. The order of a
graph is
vertex is the number of edges that connect to it, where an edge that connects to the vertex at both
ends (a loop) is counted twice.
For an edge {u, v}, graph theorists usually use the somewhat shorter notation uv.
Applications[edit]
The network graph formed by Wikipedia editors (edges) contributing to different Wikipedia language versions (nodes)
during one month in summer 2013.[3]
Graphs can be used to model many types of relations and processes in physical, biological, [4] social
and information systems. Many practical problems can be represented by graphs.
In computer science, graphs are used to represent networks of communication, data organization,
computational devices, the flow of computation, etc. For instance, the link structure of a website can
be represented by a directed graph, in which the vertices represent web pages and directed edges
represent links from one page to another. A similar approach can be taken to problems in travel,
biology, computer chip design, and many other fields. The development of algorithms to handle
graphs is therefore of major interest in computer science. The transformation of graphs is often
formalized and represented by graph rewrite systems
Graph theory is also used to study molecules in chemistry and physics. In condensed matter
physics, the three-dimensional structure of complicated simulated atomic structures can be studied
quantitatively by gathering statistics on graph-theoretic properties related to the topology of the
atoms..
Trees
Edges
v1
Chromatic number
2 if v > 1
In mathematics, and more specifically in graph theory, a tree is an undirected graph in which any
two vertices are connected byexactly one path. In other words, any connected graph without simple
cycles is a tree. A forest is a disjoint union of trees.
The various kinds of data structures referred to as trees in computer science have underlying
graphs that are trees in graph theory, although such data structures are generally rooted trees, thus
in fact being directed graphs, and may also have additional ordering of branches.
Rooted trees in their directed graph form may be called directed rooted tree.[1] Other terms for this
include[2] arborescence,[3]out-arborescence,[4] out-tree,[3][5] and even branching.[3]
The term "tree" was coined in 1857 by the British mathematician Arthur Cayley.[6]