Chapter 12 : Computer Programming Chapter 12
Chapter Contents : Chapter Contents Section A: Programming Basics
Section B: Procedural Programming
Section C: Object-Oriented Programming
Section D: Declarative Programming
Section E: Secure Programming
Programming Basics : Programming Basics Computer Programming and Software Engineering
Programming Languages and Paradigms
Program Planning
Program Coding
Program Testing and Documentation
Programming Tools
Computer Programming and Software Engineering : Computer Programming and Software Engineering The instructions that make up a computer program are sometimes referred to as code
Programs can have millions of lines of code
Developed by computer programmers
Computer programming
Computer Programming and Software Engineering : Computer Programming and Software Engineering
Programming Languages and Paradigms : Programming Languages and Paradigms Programming languages are made up of keywords and grammar rules designed for creating computer instructions
Keywords can be combined with parameters
Low-level languages typically include commands specific to a particular CPU or microprocessor family
High-level languages use command words and grammar based on human languages
Programming Languages and Paradigms : Programming Languages and Paradigms First-generation languages
Machine language
Second-generation languages
Assembly language
Third-generation languages
Easy-to-remember command words
Programming Languages and Paradigms : Programming Languages and Paradigms Fourth-generation languages
More closely resembles human language
Fifth-generation languages
Based on a declarative programming paradigm
The programming paradigm refers to a way of conceptualizing and structuring the tasks a computer performs
Programming Languages and Paradigms : Programming Languages and Paradigms
Program Planning : Program Planning The problem statement defines certain elements that must be manipulated to achieve a result or goal
You accept assumptions as true to proceed with program planning
Known information helps the computer to solve a problem
Variables vs. constants
Program Planning : Program Planning Problem statement:
Assuming that there are two pizzas to compare, that both pizzas contain the same toppings, and that the pizzas could be round or square, and given the prices, shapes, and sizes of the two pizzas, the computer will print a message indicating which pizza has the lower price per square inch
Program Coding : Program Coding A text editor such as
Notepad allows programmers
to enter lines of code using a familiar word processing interface.
Program Coding : Program Coding A VDE (visual development environment) provides programmers with tools to build substantial sections of a program
Form design grid
Control
Properties
Event
Event- handling code
Program Coding : Program Coding Controls, such as the
Best Deal button, can be
selected by a programmer
from a properties list. Here a programmer is selecting the background color for the Best Deal button.
Program Coding : Program Coding
Program Testing and Documentation : Program Testing and Documentation A computer program must be tested to ensure that it works correctly
Program errors include
Syntax errors
Runtime errors
Logic errors
A debugger can help a programmer read through lines of code and solve problems
Program Testing and Documentation : Program Testing and Documentation Remarks or “comments” are a form of documentation that programmers insert into the program code
Programming Tools : Programming Tools An SDK (software development kit) is a collection of language-specific programming tools that enables a programmer to develop applications for a specific computer platform
An IDE (integrated development environment) is a type of SDK that packages a set of development tools into a sleek programming application
Programming Tools : Programming Tools A component is a prewritten module, typically designed to accomplish a specific task
An API is a set of application program or operating system functions that programmers can access from within the programs they create
C and C++ are the most popular programming languages
Particle renderers
Pathfinder algorithms
Procedural Programming : Procedural Programming Algorithms
Expressing an Algorithm
Sequence, Selection, and Repetition Controls
Procedural Languages and Applications
Algorithms : Algorithms Set of steps for carrying out a task that can be written down and implemented
Start by recording the steps you take to solve the problem manually
Specify how to manipulate information
Specify what the algorithm should display as a solution
Algorithms : Algorithms
Expressing an Algorithm : Expressing an Algorithm Structured English
Pseudocode
Expressing an Algorithm : Expressing an Algorithm Flowchart The pizza program flowchart
illustrates how the computer
should proceed through the
instructions in the final program.
Expressing an Algorithm : Expressing an Algorithm Perform a walkthrough to make sure your algorithm works
Sequence, Selection, and Repetition Controls : Sequence, Selection, and Repetition Controls Sequence control structure Executing a GOTO command
directs the computer to a different
part of the program.
Sequence, Selection, and Repetition Controls : Sequence, Selection, and Repetition Controls Subroutines, procedures, and functions are sections of code that are part of the program, but not included in the main sequential execution path
Sequence, Selection, and Repetition Controls : Sequence, Selection, and Repetition Controls Selection control structure The computer executes a decision
indicated on the flowchart by the question in the diamond shape.
Sequence, Selection, and Repetition Controls : Sequence, Selection, and Repetition Controls Repetition control structure To execute a loop, the computer
repeats one or more commands until some condition indicates that the looping should stop.
Procedural Languages and Applications : Procedural Languages and Applications Popular procedural languages include FORTRAN, COBOL, FORTH, APL, ALGOL, PL/1, Pascal, C, Ada, and BASIC
The procedural approach is best used for problems that can be solved by following a step-by-step algorithm
Does not fit well with certain types of problems
Produces programs that run quickly and efficiently
Object-Oriented Programming : Object-Oriented Programming Objects and Classes
Inheritance
Methods and Messages
Object-oriented Program Structure
Object-oriented Languages and Applications
Objects and Classes : Objects and Classes An object represents an abstract or real-world entity
A class is a template for a group of objects with similar characteristics
A class attribute defines the characteristics of a set of objects
Public vs. private attributes
Inheritance : Inheritance Passing certain characteristics from one class to other classes
Superclass
Subclass
Class hierarchy
Methods and Messages : Methods and Messages A method is a segment of code that defines an action
Collect input, perform calculations, etc.
A method is activated by a message
Can be defined along with the class they affect
Polymorphism refers to the ability to redefine a method in a subclass
Helps simplify program code
Object-Oriented Program Structure : Object-Oriented Program Structure
Object-Oriented Program Structure : Object-Oriented Program Structure
Object-Oriented Program Structure : Object-Oriented Program Structure When the pizza program
runs, on-screen prompts
ask for the shape, size, and
price of each pizza; then
the program displays a
message that indicates
which pizza is the best
deal.
Object-Oriented Languages and Applications : Object-Oriented Languages and Applications SIMULA was believed to be the first object-oriented computer language
The Dynabook project was the second major development in object-oriented languages
Popular object-oriented languages today are Ada95, C++, Visual Basic, and C#
The OO paradigm results in decreased runtime efficiency, but allows encapsulation, which hides the internal details of objects and their methods
Declarative Programming : Declarative Programming The Declarative Paradigm
Prolog Facts
Prolog Rules
Input Capabilities
Declarative Languages and Applications
The Declarative Paradigm : The Declarative Paradigm Attempts to describe a problem without specifying exactly how to arrive at a solution
A fact is a statement for solving a problem
Rules describe the relationship between facts
The Declarative Paradigm : The Declarative Paradigm A decision table is a tabular method for visualizing and specifying rules based on multiple factors
Prolog Facts : Prolog Facts
Prolog Facts : Prolog Facts You can query a program’s database by asking a question, called a goal The ?- prompt allows you
to query a set of Prolog
facts and rules.
Prolog Facts : Prolog Facts Finding a value for a variable is referred to as instantiation Prolog uses a process called instantiation to
satisfy goals.
Prolog Rules : Prolog Rules The order of program instructions is critically important
Input Capabilities : Input Capabilities When the pizza program
runs, the pizzainfo rule
collects input for the prices, the sizes, and the shapes of two pizzas.
Declarative Languages and Applications : Declarative Languages and Applications Declarative programming languages are most suitable for problems that pertain to words and concepts rather than to numbers
Highly effective programming environment
Not commonly used for production applications
Minimal input and output capabilities
Poor performance on today’s personal computer architecture
Secure Programming : Secure Programming Black Hat Exploits
Secure Software Development
Mitigation
Black Hat Exploits : Black Hat Exploits Today’s operating systems, utilities, and application software are full of defects that create security holes, which are exploited by black hats
A buffer overflow (also called a buffer overrun) is a condition in which data in memory exceeds its expected boundaries and flows into memory areas intended for use by other data
Black Hat Exploits : Black Hat Exploits
Black Hat Exploits : Black Hat Exploits Verbose error messages can also present attackers with information about the directory location of programs or files, the structure of a database, or the layout of the program in memory
Secure Software Development : Secure Software Development Most software security problems can be traced back to defects that programmers unintentionally introduce in software during design and development
Formal methods help programmers apply rigorous logical and mathematical models to software design, coding, testing, and verification
Threat modeling (risk analysis)
Secure Software Development : Secure Software Development
Secure Software Development : Secure Software Development An attack tree is a hierarchical diagram of potential attacks against a system
Secure Software Development : Secure Software Development Defensive programming (also referred to as secure programming) is an approach to software development in which programmers anticipate what might go wrong as their programs run and take steps to smoothly handle those situations
Source code walkthroughs
Simplification
Filtering input
Secure Software Development : Secure Software Development Signed code is a software program that identifies its source and carries a digital certificate attesting to its authenticity
Mitigation : Mitigation Despite defensive programming and other tactics to produce secure software, some defects inevitably remain undiscovered in products that end up in the consumers’ hands When bugs are discovered, the programmer’s remaining line of defense is to produce a bug fix, or patch
Mitigation : Mitigation Take the following steps to avoid security problems that stem from software defects
Select applications from software publishers with a good security track record
Watch for patches and apply them
Consider using open source software, which has been extensively reviewed by the programming community
Keep your firewall and antivirus software deployed and up-to-date
Chapter 12 Complete : Chapter 12 Complete Computer Programming