ZeePedia

What is programming

System Software, Application Software, C language >>
img
CS201 ­ Introduction to Programming
Lecture Handout
Introduction to programming
Lecture No. 1
Summary
What is programming
o
Why programming is important
o
What skills are needed
o
Develop a basic recipe for writing programs
o
Points to remember
o
What is programming
As this course is titled "Introduction to programming", therefore it is most essential and
appropriate to understand what programming really means. Let us first see a widely
known definition of programming.
Definition: "A program is a precise sequence of steps to solve a particular problem."
It means that when we say that we have a program, it actually mean that we know about a
complete set activities to be performed in a particular order. The purpose of these
activities is to solve a given problem.
Alan Perlis, a professor at Yale University, says:
"It goes against the grain of modern education to teach children to program. What fun is
there in making plans, acquiring discipline in organizing thoughts, devoting attention to
detail and learning to be self-critical? "
It is a sarcastic statement about modern education, and it means that the modern
education is not developing critical skills like planning, organizing and paying attention
to detail. Practically, in our day to day lives we are constantly planning, organizing and
paying attention to fine details (if we want our plans to succeed). And it is also fun to do
these activities. For example, for a picnic trip we plan where to go, what to wear, what to
take for lunch, organize travel details and have a good time while doing so.
When we talk about computer programming then as Mr. Steve Summit puts it
"At its most basic level, programming a computer simply means telling it what to do, and
this vapid-sounding definition is not even a joke. There are no other truly fundamental
aspects of computer programming; everything else we talk about will simply be the
details of a particular, usually artificial, mechanism for telling a computer what to do.
Page 1
img
CS201 ­ Introduction to Programming
Sometimes these mechanisms are chosen because they have been found to be convenient
for programmers (people) to use; other times they have been chosen because they're easy
for the computer to understand. The first hard thing about programming is to learn,
become comfortable with, and accept these artificial mechanisms, whether they make
``sense'' to you or not. "
Why Programming is important
The question most of the people ask is why should we learn to program when there are so
many application software and code generators available to do the task for us. Well the
answer is as give by the Matthias Felleisen in the book `How to design programs'
"The answer consists of two parts. First, it is indeed true that traditional forms of
programming are useful for just a few people. But, programming as we the authors
understand it is useful for everyone: the administrative secretary who uses spreadsheets
as well as the high-tech programmer. In other words, we have a broader notion of
programming in mind than the traditional one. We explain our notion in a moment.
Second, we teach our idea of programming with a technology that is based on the
principle of minimal intrusion. Hence, our notion of programming teaches problem-
analysis and problem-solving skills without imposing the overhead of traditional
programming notations and tools."
Hence learning to program is important because it develops analytical and problem
solving abilities. It is a creative activity and provides us a mean to express abstract ideas.
Thus programming is fun and is much more than a vocational skill. By designing
programs, we learn many skills that are important for all professions. These skills can be
summarized as:
Critical reading
o
Analytical thinking
o
Creative synthesis
o
What skills are needed
Programming is an important activity as people life and living depends on the programs
one make. Hence while programming one should
Paying attention to detail
o
Think about the reusability.
o
Think about user interface
o
Understand the fact the computers are stupid
o
Comment the code liberally
o
Paying attention to detail
In programming, the details matter. This is a very important skill. A good programmer
always analyzes the problem statement very carefully and in detail. You should pay
Page 2
img
CS201 ­ Introduction to Programming
attention to all the aspects of the problem. You can't be vague. You can't describe your
program 3/4th of the way, then say, "You know what I mean?'', and have the compiler
figure out the rest.
Furthermore you should pay attention to the calculations involved in the program, its
flow, and most importantly, the logic of the program. Sometimes, a grammatically correct
sentence does not make any sense. For example, here is a verse from poem "Through the
Looking Glass" written by Lewis Carol:
"Twas brillig, and the slithy toves
Did gyre and gimble in the wabe "
The grammar is correct but there is no meaning. Similarly, the sentence, "Mr. ABC
sleeps thirty hours every day", is grammatically correct but it is illogical.
So it may happen that a program is grammatically correct. It compiles and runs but
produces incorrect or absurd results and does not solve the problem. It is very important
to pay attention to the logic of the program.
Think about the reusability
When ever you are writing a program, always keep in mind that it could be reused at
some other time. Also, try to write in a way that it can be used to solve some other related
problem. A classic example of this is:
Suppose we have to calculate the area of a given circle. We know the area of a circle is
(Pi * r2). Now we have written a program which calculates the area of a circle with given
radius. At some later time we are given a problem to find out the area of a ring. The area
of the ring can be calculated by subtracting the area of outer circle from the area of the
inner circle. Hence we can use the program that calculates the area of a circle to calculate
the area of the ring.
Think about
Good user
interface
As
programmers, we
assume that
computer
Page 3
img
CS201 ­ Introduction to Programming
users know a lot of things, this is a big mistake. So never assume that the user of your
program is computer literate. Always provide an easy to understand and easy to use
interface that is self explanatory.
Understand the fact that computers are stupid
Computers are incredibly stupid. They do exactly what you tell them to do: no more, no
less-- unlike human beings. Computers can't think by themselves. In this sense, they
differ from human beings. For example, if someone asks you, "What is the time?", "Time
please?" or just, "Time?" you understand anyway that he is asking the time but computer
is different. Instructions to the computer should be explicitly stated. Computer will tell
you the time only if you ask it in the way you have programmed it.
When you're programming, it helps to be able to "think'' as stupidly as the computer does,
so that you are in the right frame of mind for specifying everything in minute detail, and
not assuming that the right thing will happen by itself.
Comment the code liberally
Always comment the code liberally. The comment statements do not affect the
performance of the program as these are ignored by the compiler and do not take any
memory in the computer. Comments are used to explain the functioning of the programs.
It helps the other programmers as well as the creator of the program to understand the
code.
Program design recipe
In order to design a program effectively and properly we must have a recipe to follow. In
the book name `How to design programs' by Matthias Felleisen.and the co-worker, the
idea of design recipe has been stated very elegenlty as
"Learning to design programs is like learning to play soccer. A player must learn to trap a
ball, to dribble with a ball, to pass, and to shoot a ball. Once the player knows those basic
skills, the next goals are to learn to play a position, to play certain strategies, to choose
among feasible strategies, and, on occasion, to create variations of a strategy because
none fits. "
The author then continue to say that:
"A programmer is also very much like an architect, a composers, or a writer. They are
creative people who start with ideas in their heads and blank pieces of paper. They
conceive of an idea, form a mental outline, and refine it on paper until their writings
reflect their mental image as much as possible. As they bring their ideas to paper, they
employ basic drawing, writing, and playing music to express certain style elements of a
building, to describe a person's character, or to formulate portions of a melody. They can
practice their trade because they have honed their basic skills for a long time and can use
them on an instinctive level.
Page 4
img
CS201 ­ Introduction to Programming
Programmers also form outlines, translate them into first designs, and iteratively refine
them until they truly match the initial idea. Indeed, the best programmers edit and rewrite
their programs many times until they meet certain aesthetic standards. And just like
soccer players, architects, composers, or writers, programmers must practice the basic
skills of their trade for a long time before they can be truly creative.
Design recipes are the equivalent of soccer ball handling techniques, writing techniques,
arrangements, and drawing skills. "
Hence to design a program properly, we must:
Analyze a problem statement, typically expressed as a word problem.
o
Express its essence, abstractly and with examples.
o
Formulate statements and comments in a precise language.
o
Evaluate and revise the activities in light of checks and tests and
o
Pay attention to detail.
o
All of these are activities that are useful, not only for a programmer but also for a
businessman, a lawyer, a journalist, a scientist, an engineer, and many others.
Let us take an example to demonstrate the use of design recipe:
Suppose we have to develop a payroll system of a company. The company has permanent
staff, contractual staff, hourly based employees and per unit making employees.
Moreover, there are different deductions and benefits for permanent employees and there
is a bonus for per unit making employees and overtime for contractual employees.
We need to analyze the above problem statement. The company has four categories of
employees; i.e.; Permanent staff, Contractual staff, hourly based employees and per unit
making employees. Further, permanent staff has benefits and deductions depending upon
their designation. Bonus will be given to per unit making employees if they make more
than 10 pieces a day. Contractual employee will get overtime if they stay after office
hours.
Now divide the problem into small segments and calculations. Also include examples in
all segments. In this problem, we should take an employee with his details from each
category. Let's say, Mr. Ahmad is a permanent employee working as Finance Manager.
His salary is Rs.20000 and benefits of medical, car allowance and house rent are Rs.4000
and there is a deduction of Rs.1200. Similarly, we should consider employees from other
categories. This will help us in checking and testing the program later on.
The next step is to formulate these statements in a precise language, i.e. we can use the
pseudo code and flowcharting. which will be then used to develop the program using
computer language.
Then the program should be evaluated by testing and checking. If there are some changes
identified, we revise the activities and repeat the process. Thus repeating the cycle, we
achieve a refined solution.
Page 5
img
CS201 ­ Introduction to Programming
Points to remember
Hence the major points to keep in mind are:
Don't assume on the part of the users
o
User Interface should be friendly
o
Don't forget to comment the code
o
PAY ATTENTION TO DETAIL
o
Program, program and program, not just writing code, but the whole process of
o
design and development
Page 6
Table of Contents:
  1. What is programming
  2. System Software, Application Software, C language
  3. C language: Variables, Data Types, Arithmetic Operators, Precedence of Operators
  4. C++: Examples of Expressions, Use of Operators
  5. Flow Charting, if/else structure, Logical Operators
  6. Repetition Structure (Loop), Overflow Condition, Infinite Loop, Properties of While loop, Flow Chart
  7. Do-While Statement, for Statement, Increment/decrement Operators
  8. Switch Statement, Break Statement, Continue Statement, Rules for structured Programming/Flow Charting
  9. Functions in C: Structure of a Function, Declaration and Definition of a Function
  10. Header Files, Scope of Identifiers, Functions, Call by Value, Call by Reference
  11. Arrays: Initialization of Arrays, Copying Arrays, Linear Search
  12. Character Arrays: Arrays Comparisonm, Sorting Arrays Searching arrays, Functions arrays, Multidimensional Arrays
  13. Array Manipulation, Real World Problem and Design Recipe
  14. Pointers: Declaration of Pointers, Bubble Sort Example, Pointers and Call By Reference
  15. Introduction, Relationship between Pointers and Arrays, Pointer Expressions and Arithmetic, Pointers Comparison, Pointer, String and Arrays
  16. Multi-dimensional Arrays, Pointers to Pointers, Command-line Arguments
  17. String Handling, String Manipulation Functions, Character Handling Functions, String Conversion Functions
  18. Files: Text File Handling, Output File Handling
  19. Sequential Access Files, Random Access Files, Setting the Position in a File, seekg() and tellg() Functions
  20. Structures, Declaration of a Structure, Initializing Structures, Functions and structures, Arrays of structures, sizeof operator
  21. Bit Manipulation Operators, AND Operator, OR Operator, Exclusive OR Operator, NOT Operator Bit Flags Masking Unsigned Integers
  22. Bitwise Manipulation and Assignment Operator, Programming Constructs
  23. Pre-processor, include directive, define directive, Other Preprocessor Directives, Macros
  24. Dynamic Memory Allocation, calloc, malloc, realloc Function, Dangling Pointers
  25. History of C/C++, Structured Programming, Default Function Arguments
  26. Classes and Objects, Structure of a class, Constructor
  27. Classes And Objects, Types of Constructors, Utility Functions, Destructors
  28. Memory Allocation in C++, Operator and Classes, Structures, Function in C++,
  29. Declaration of Friend Functions, Friend Classes
  30. Difference Between References and Pointers, Dangling References
  31. Operator Overloading, Non-member Operator Functions
  32. Overloading Minus Operator, Operators with Date Class, Unary Operators
  33. Assignment Operator, Self Assignmentm, Pointer, Conversions
  34. Dynamic Arrays of Objects, Overloading new and delete Operators
  35. Source and Destination of streams, Formatted Input and Output, Buffered Input/Output
  36. Stream Manipulations, Manipulators, Non Parameterized Manipulators, Formatting Manipulation
  37. Overloading Insertion and Extraction Operators
  38. User Defined Manipulator, Static keyword, Static Objects
  39. Pointers, References, Call by Value, Call by Reference, Dynamic Memory Allocation
  40. Advantages of Objects as Class Members, Structures as Class Members
  41. Overloading Template Functions, Template Functions and Objects
  42. Class Templates and Nontype Parameters, Templates and Static Members
  43. Matrices, Design Recipe, Problem Analysis, Design Issues and Class Interface
  44. Matrix Constructor, Matrix Class, Utility Functions of Matrix, Input, Transpose Function
  45. Operator Functions: Assignment, Addition, Plus-equal, Overloaded Plus, Minus, Multiplication, Insertion and Extraction