Lecure Notes On C Language

You might also like

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 246

Computer Programming Using

Turbo C
What is computer Programming?

Computer programming is creating a


sequence of instructions to enable
the computer to do something.
What is a programming language?

A programming language is an
artificial language that can be used
to control the behavior of a
machine, particularly a computer.
Programming Language Translation

 Source Program -- program written in


a high-level programming language.
 Object Program -- the source
program after it has been translated
into machine language.
 Translator Program -- the program
that translates the source program
into the object program. Can be
either a compiler or an interpreter.
Compilers vs. Interpreters
 Compiler -- spends some time evaluating the
entire program and then translates all the
programming statements of a program into a
machine language program, which is then
executed at once.
 Interpreter -- translates interactively each
programming statement into an immediately
usable machine language instruction. Although an
interpreter slows down the execution speed of a
program somewhat, it does not require extra steps
to compile and link like a compiler.
 In a production environment where throughput is
more critical, a compiled language is preferred.
 Any high-level language can either be interpreted
or compiled.
Categories of Programming
 Systems programming involves writing
programs that enable a computer to carry out
its basic internal functions as well as some
other specialized functions. Examples of
systems programs include operating systems,
device drivers, and utility programs.
 Applications programming refers to the
process of developing programs to be used for
specific applications, such as a business
application (e.g., computing benefits to be
paid to different employee classifications) or
an academic application (e.g., determining
who qualifies for which scholarship, based on
specified eligibility criteria).
Stages in the Applications
Programming Process

1. Problem statement: The programming


process begins with a clear, written
statement of the problem to be solved by the
computer.
2. Algorithm development: Once the problem
has been clearly stated and all the
requirements have been understood, the
next step is to develop the program logic
necessary for accomplishing the task.
*An algorithm is defined as a logical sequence
of steps that must be performed in order to
accomplish a given task.
• Sample Tool: Flowchart
Stages in the Applications
Programming Process

3. Program coding: When the programmer is


satisfied with the efficacy of the logic
developed in the preceding step, it is time
to convert that logic (in either flowchart or
pseudocode form) to the specific syntax of
the programming language that will be
used.
4. Program testing: The coded program is next
checked for errors.
5. Program documentation: The programming
process is complete when the program has
been fully documented.
Computer Programming 1

Five steps to define a programming problem:


1. Restate the problem.
2. Analyze the problem.
3. Identify the output.
4. Identify the input.
5. Identify the process.
Common Programming Errors

1. Syntax Errors
- occurs when your code violates one or more
grammar rules of C and is detected by the
compiler as it attempts to translate your
program.
Note: If a statement has a syntax error, it cannot
be translated and your program will not be
executed.
Common Programming Errors
2. Run-time Errors
- are detected errors and displayed by the
compiler during the execution of the program.
- occurs when the program directs the
computer to perform illegal operation, such as
dividing a number by zero.
- an attempt to perform an invalid operation,
detected during program execution.
Note: When a run-time error occurs, the
computer will stop executing your program
and will display a diagnostic message that
indicates the line where the error was
detected.
Common Programming Errors

3. Logic Errors
- occur when a program follows a
faulty algorithm.
- do not cause a run-time error and
do not display error messages, so are
very difficult to detect.

Note: The only sign of a logic error may


be incorrect program output.
C History

Dennis Ritchie – developed Turbo C at


AT&T Bell Laboratories.

Turbo C was first developed for


system programming.
C Programming Language

C Language
 one of the most popular languages of
modern times.
 Programs written in C are portable
across different environments
 Applications created using the C
language range from operating
systems to database systems.
FIGURE 2-1 Taxonomy of the C Language
C Programming Language

 C is a programming language
designed by Dennis Ritchie in 1972
at AT&T Bell Laboratories.
 C was designed as a language for
systems programming, as a way to
fully access the computer’s power
without becoming caught up in the
tedious writing of assembly
language.
General Description of C

C is a concise language
 it has only about 32
keywords
 it encourages concise code.
General Description of C

C is flexible, powerful, and


well suited for programming
several levels of abstraction.
General Description of C

 C is a modular language
 The function is the primary
program structure, but
functions may not be nested.
 The C programmer depends
on a library of function, many
of which becomes part of the
standard language definition.
General Description of C

 C is the basis for C++.


 C++ programmer also uses
many of the constructs and
methodologies that are
routinely used by the C
programmer.
 learning C can be considered a
first step in learning C++.
General Description of C

C is weakly typed
 allowing quite a bit of data
conversion and providing
minimal run time checking.
C Language Elements

The C Preprocessor - a program that


is executed before the source code is
compiled.
DIRECTIVES – how C preprocessor
commands are called, and begin with a
pound / hash symbol (#). No white
space should appear before the #, and
a semi colon is NOT required at the
end.
C Language Elements

Two Common Directives:


1. #include – gives program access to
a library.
- causes the preprocessor to insert
definitions from a standard header
file into the program before
compilation.
- tells the preprocessor that some
names used in the program are
found in the standard header file.
C Language Elements

Two Common Directives:


2. #define – allows you to make
text substitutions before
compiling the program.
- by convention, all identifiers
that are to be changed by the
preprocessor are written in
capital letters.
C Language Elements
#include <stdio.h>
#define MIN 0 /* #defines */
#define MAX 10
#define TRUE 1
#define FALSE 0
int main() { /* beginning of program */
int a;
int okay=FALSE;/*the compiler sees this as int okay=0;*/
while(!okay) {
printf("Input an integer between %d and %d: ", MIN, MAX);
scanf("%d", &a);
if(a>MAX) {
printf("\nToo large.\n"); }
else if(a<MIN) {
printf("\nToo small.\n"); }
else { printf("\nThanks.\n");
okay = TRUE; }
} return 0; }
C Language Elements
Libraries – C implementations that
contain collections of useful
functions and symbols that may be
accessed by a program.

Note: A C system may expand the number of


operation available by supplying additional
libraries. Each library has a standard
header file whose name ends with the
symbol .h.
C Language Elements
Commenting Your Code
You can add comments to your code by enclosing
your remarks within /* and */. However,
nested comments aren't allowed.
A few properties of comments:
• They can be used to inform the person viewing
the code what the code does. This is helpful
when you revisit the code at a later date.
• The compiler ignores all the comments. Hence,
commenting does not affect the efficiency of
the program.
• You can use /* and */ to comment out sections
of code when it comes to finding errors,
instead of deletion.
C Language Elements
Here are examples of commented code:

/* Comments spanning several */


/* lines can be commented*/
/* out like this!*/
/* But this is a simpler way of doing it! */
// These are C++
// style comments
// and should NOT
// be used with C!!
/* /* NESTED COMMENTS ARE ILLEGAL!! */ */
C Language Elements

Function Main
Every C program has a main function. This
is where program execution begins.
Body- the remaining line of the program in
the body.
Braces {} – enclose the body of the
function.
- indicates the beginning and end of the
function main.
C Language Elements
Two parts of the function body:
1. Declarations – the part of the program
that tells the compiler the names of
memory cells in a program needed in
the function, commonly data
requirements identified during problem
analysis.
2. Executable statements – derived
statements from the algorithm into
machine language and later executed.
FIGURE 2-2 Structure of a C Program
C Language Elements
Your First Program

#include <stdio.h>
#include <conio.h>

main()
{
printf("Hello World!\n");
getch();
}
C Language Elements
Reserved Words
In C, a reserved word is defined as
the word that has special meaning
in C and cannot be used for other
purposes.

Examples: int, void, double, return


C Language Elements
Punctuation Marks
/* */ -(slash asterisk) used to enclose a single line
remarks.
“ -(double quotation) used to display series of
characters, and initializing string constant.
; -(semicolon) statement separator
, -(comma) used to separate one variable to
another
= -(equal sign) used as assignment operator
‘ -(single quotation) used for initializing
character expression
& -(ampersand) used as address operator
{} -(open/close braces) denotes the beginning
and end of the program.
2-3 Identifiers

One feature present in all computer


languages is the identifier. Identifiers allow
us to name data and other objects in the
program. Each identified object in the
computer is stored at a unique address. If
we didn’t have identifiers that we could use
to symbolically represent data locations, we
would have to know and use object’s
addresses. Instead, we simply give data
identifiers and let the compiler keep track of
where they are physically located.
C Language Elements

Reserved Words
In C, a reserved word is defined as
the word that has special meaning
in C and cannot be used for other
purposes.

Examples: int, void, double, return


Variables, Data Types and Constants
Naming Conventions (Identifiers)

1. Names are made up of letters and digits.


2. The first character must be a letter.
3. C is case-sensitive, example ‘s’ is not the
same with ‘S’.
4. The underscore symbol (_) is considered as a
letter in C. It is not recommended to be used,
however, as the first character in a name.
5. At least the first 3 characters of a name are
significant.
Variables, Data Types and Constants
Names... Example

CANNOT start with a number 2i


CAN contain a number elsewhere h2o
CANNOT contain any arithmetic operators... r*s+t
CANNOT contain any other punctuation marks... #@x%£!!a
CAN contain or begin with an underscore
_height_
CANNOT be a C keyword struct
CANNOT contain a space im stupid
CAN be of mixed cases Squared
Table 2-2 Examples of Valid and Invalid Names
Note
An identifier must start with a letter or underscore:
it may not have a space or a hyphen.
Note
C is a case-sensitive language.
Variables, Data Types and Constants
Variables - are like containers in your
computer's memory - you can store values
in them and retrieve or modify them when
necessary.
- associated with a memory cell whose
value can change as the program executes.

Variable declaration – statements that


communicate to the C compiler the names
of all variables used in the program and the
kind of information stored in each variable.
- also tells how that information will be
represented in memory.
Variables, Data Types and Constants

Syntax for Declarations:

data type variable_list;

Ex. int x,age;


float sum,a,b;
char middle_intial;
Note
When a variable is defined, it is not initialized.
We must initialize any variable requiring
prescribed data when the function starts.
Variables, Data Types and Constants

Data Type – a set of values and a set


of operations that can be performed
on those values.

Standard Predefined Data Type in C:


 char

 double

 int
FIGURE 2-6 Nested Block Comments Are Invalid
Variables, Data Types and Constants
Seven Basic C Data Types:
1. Text (data type char) – made up of single characters
(example x,#,9,E) and strings (“Hello”), usually 8 bits, or
1 byte with the range of 0 to 255.
2. Integer values – those numbers you learned to count
with.
3. Floating-point values – numbers that have fractional
portions such as 12.345, and exponents 1.2e+22.
4. Double-floating point values – have extended range of
1.7e-308 to 1.7e+308.
5. Enumerated data types – allow for user-defined data
types.
6. void – signifies values that occupy 0 bit and have no
value. You can also use this type to create generic
pointers.
7. Pointer – does not hold information as do the other data
types. Instead, each pointer contains the address of the
memory location.
Variables, Data Types and Constants
int - data type
int is used to define integer numbers.
Ex.
{ int Count;
Count = 5; }

float - data type


float is used to define floating point numbers.
Ex.
{ float Miles;
Miles = 5.6; }
FIGURE 2-10 Floating-point Types
Variables, Data Types and Constants
double - data type
double is used to define BIG floating point
numbers. It reserves twice the storage for
the number. On PCs this is likely to be 8
bytes.
Ex.
{ double Atoms;
Atoms = 2500000; }

char - data type


char defines characters.
Ex.
{ char Letter;
Letter = 'x'; }
Variables, Data Types and Constants
Modifiers

The three data types above have the following


modifiers.
 short
 long
 signed
 unsigned
The modifiers define the amount of storage allocated
to the variable. The amount of storage allocated
is not cast in stone. ANSI has the following rules:
short int <= int <= long int
float <= double <= long double
Variables, Data Types and Constants

Type Bytes Bits Range


short int 2 16 -32,768 -> +32,767 (32kb)
unsigned short int 2 16 0 -> +65,535 (64Kb)
unsigned int 4 32 0 -> +4,294,967,295 ( 4Gb)
int 4 32 -2,147,483,648 -> +2,147,483,647
(2Gb)
long int 4 32 -2,147,483,648 -> +2,147,483,647
(2Gb)
signed char 1 8 -128 -> +127
unsigned char 1 8 0 -> +255
float 4 32
double 8 64
long double 12 96
Variables, Data Types and Constants
Constants – identifiers that are having a
constant value all throughout the program
execution.
- also fixed values that may not be altered
by the program.

Examples:
1. Character constants – enclosed between
single quotes. Ex. ‘A’, ‘+’
2. Integer constants – specified as numbers
without fractional components.
Ex. 5 and -160
Variables, Data Types and Constants

 Floating constants – require the use of


decimal point followed by the number’s
fractional components. Ex. 16.234
 String constants – set of characters
enclosed by double quotes. Ex. “bag”
and “this is good”
 Backslash character constants –
enclosing all character constants in
single quotes that works for most
printing characters. Ex. g = ‘\t’
Variables, Data Types and Constants
SEQUENCE NAME MEANING
\a Alert Sound a beep
\b Backspace Backs up one character
\f Form feed Starts a new screen of page
\n New line Moves to the beginning of the next
line
\r Carriage Moves to the beginning of the current
Return line
\t Horizontal tab Moves to the next Tab position
\v Vertical tab Moves down a fixed amount
\\ Backslash Displays an actual backslash
\’ Single quote Displays an actual single quote
\? Question mark Displays an actual question mark
\”” Double quote Displays an actual double quote
Variables, Data Types and Constants
Defining Constants

 #define preprocessor
- allows us to define symbolic names and
constants.
A quick example:
#define PI 3.14159
This statement will translate every occurrence of PI in
the program to 3.14159.
Here is a more complete example:
#define PI 3.14159 main() { int r=10; float cir; cir =
PI * (r*r); }
Variables, Data Types and Constants
Defining Constants

 The const keyword.


- used to create a read only variable. Once initialized,
the value of the variable cannot be changed but can
be used just like any other variable.
const syntax:
main()
{ const float pi = 3.14; }
The const keyword is used as a qualifier to the following
data types - int float char double struct.
const int degrees = 360;
const float pi = 3.14;
const char quit = 'q';
Operators
Assignment Operator – Equal sign (=)
- the most basic assignment
operator where the value on the
right of the equal sign is assigned to
the variable on the left.
Example:
c = c + 1;
radius = 2 * diameter;
stat = getch();
Operators
Binary Operators
- take two operands and return a result.

Operator Use Result


+ op1 + op2 adds op1 to op2
- op1 - op2 subtracts op2 from op1
* op1 * op2 multiplies op1 by op2
/ op1 / op2 divides op1 by op2
% op1 % op2 computes the remainder
from dividing op1 by op2
Operators

Unary Operators
- changes the sign of a value or
variable.
- Unary minus (-) and unary plus (+)

Examples:
2 +-3
((-x) + (+y))
Operators
Increment (++) and Decrement (--)
Operators

++ increment adds one to a value of the


variable
-- decrement subtracts one from a value
of the variable

Note: The value of the expression in which


++ or -- operator is used depends on the
position of the operator.
Increment (++) and Decrement(--)
Operators

 Prefix increment
 is when the ++ is placed immediately
in front of its operand.
 the value of the expression is the
variable’s value after incrementing.
Increment (++) and Decrement(--)
Operators

 Postfix increment
 is when the expression’s value is the
value of the variable before it is
incremented.
Increment (++) and Decrement(--)
Operators

 Comparison of POSTFIX and PREFIX


Increments
 Before… x y
5 ?
Increment (++) and Decrement(--)
Operators
 Increments… y = ++x y = x++
 Prefix: Increment x and then used
it.
 Postfix: Use x and then increment
it.

 Prefix Postfix
 After… x y x y
5 6 5 5
Example
main(){
int a=3, b;
clrscr();
b=a++;
printf(“b is %d, and a is %d\n”, b, a);
b=++a;
printf(“Now b is %d, and a is %d\n”, b, a);
b=5%--a;
printf(“Now b is %d, and a is %d\n”, b, a);
printf(“Now b is %d, and a is %d\n”, ++b, a--
);
printf(“Now b is %d, and a is %d\n”, b, a);
}
Output

b is 3, and a is 4
Now b is 5, and a is 5
Now b is 1, and a is 4
Now b is 2, and a is 4
Now b is 2, and a is 3
Operators
Prefix increment/decrement - when the ++
or -- is placed immediately in front of its
operand. Meaning the value of the
expression is the variables value after
incrementing or decrementing.

Postfix increment/decrement – when the


++ or -- comes immediately after the
operand. The value of the expression is
the value of the variable before it is
incremented or decremented.
Predefined Mathematical Functions
Function Purpose
abs(x) returns the absolute value of integer x.
x=abs(-5); x=5
fabs(x) returns the absolute valued of type
double.
x=fabs(-5.2); x=5.2
ceil(x) rounds up or returns the smallest whole
number that is not less than x.
x=ceil(5.2); x=6
floor(x) rounds down or returns the largest
whole number that is not greater than x.
x=floor(5.2); x=5
Predefined Mathematical Functions
Function Purpose
sqrt(x) returns the non-negative square of x.
x=sqrt(25); x=5
pow(x) returns x to the power of y.
x=pow(4,2); x=16
sin(x) returns the sine of angle x.
cos(x) returns the cosine of angle x.
tan(x) returns the tangent of angle x.
log(x) returns the natural logarithm of x.
log10(x) returns the base 10 logarithm of x.
Conversion Specifications
Date Types printf conversion scanf conversion
specification specifications
long double %Lf %Lf
double %f %lf
float %f %f
unsigned long int %lu %lu
long int %ld %ld
unsigned int %u %u
int %d %d
short %hd %hd
char %c %c
String - %s
I/O Functions
Numeric Input Command

scanf() – one of the Turbo C object stream


object that is used to accept data from the
standard input, usually the keyboard.
syntax:
scanf(“format”, &var_name);
Example:
printf(“Input side of the square:”);
scanf(“%d”, &s);
Note
A terminal keyboard and monitor can be associated
only with a text stream. A keyboard is a source
for a text stream; a monitor is a destination
for a text stream.
FIGURE 2-15 Stream Physical Devices
Note
scanf requires variable addresses in the address list.
I/O Functions
Character/String Input Command

getch() – allows the user to input a


character and wait for the enter key.
Inputted char will not be echoed but could
be stored if location is specified.
Syntax:
getch();
var_name = getch();

Example: ans = getch();


I/O Functions
Character/String Input Command

getche() – allows the user to input a


character and there is no need for the enter
key. Inputted char will be echoed but could
be stored if location is specified.
Syntax:
getche();
var_name = getche();

Example: ans = getche();


I/O Functions
Character/String Input Command

gets() – allows the user to input a sequence


of characters (string).
syntax:
gets(variable_name_of_char_type);

Example:
gets(name);
I/O Functions
Output Command

printf – writes formatted output to the standard


output device such as the monitor.
syntax:
printf(“format code”,var_name);
Example:
printf(“%d”,x);

puts – writes the string to the standard output


device such as the monitor and positions the
cursor to the next line.
syntax:
puts(“string expression”);
Example: puts(“CIT”);
FIGURE 2-17 Output Stream Formatting Example
I/O Functions
Output Command

putchar – writes the single character to


the screen.
syntax:
putchar(var_name);

Example:
putchar(a);
Introduction to C Programming

CONTROL FLOW
Control Flow
Control Structures - specify the sequence of
execution of a group of statements.
3 Types:
1. Sequential
2. Conditional
3. Iterative

Sequential - organized such that statements


are executed in sequence, i.e., one after
the other in the order of their appearance
in the source code.
FLOWCHART

A flowchart is a diagrammatic
representation that illustrates the sequence
of operations to be performed to get the
solution of a problem. Flowcharts are
generally drawn in the early stages of
formulating computer solutions. Flowcharts
facilitate communication between
programmers and business people.
documentation of a complex program.
Guidelines in Flowcharting
1. In drawing a proper flowchart, all
necessary requirements should be
listed in logical order.
2. Flowchart should be clear, neat and
easy to follow.
3. The usual direction of the flow of a
procedure or system is from left to
right or top to bottom.
4. Only one flow line should come out
from a process symbol.
Guidelines in Flowcharting
5. Only one flow line should enter a decision
symbol, but 2 or more flow lines, one for
each possible answer, should leave the
decision symbol.
6. If flowchart becomes complex, it is better
to use connector symbols to reduce the
number of flow lines. Avoid the
intersection of flow lines.
7. Ensure that flowchart has a logical start
and end.
8. It is useful to test the validity of the
flowchart by passing through it with a
simple test data.
Advantages of Flowchart
1. Communication
flowcharts are better way of
communicating the logic of a system to
all concerned.
2. Effective analysis
with the help of flowchart, problem can
be analyzed in more effective way.
3. Proper documentation
flowcharts serve as a good program
documentation.
Advantages of Flowchart
4. Efficient coding
flowcharts act as a guide or blueprint
during the system analysis and program
development phase.
5. Proper Debugging
flowchart helps in debugging process
6. Efficient program maintenance
maintenance becomes easy with. It helps
the programmer to put efforts more
efficiently on that part.
Limitations of Flowcharts

1. Complex logic – sometimes the logic is


quite complicated, which makes flowchart
becomes complex and clumsy.
2. Alteration and Modifications – if
alterations are required, the flowchart may
require re-drawing completely.
3. Reproduction – flowchart symbols cannot
be typed, reproduction of flowchart becomes
a problem.
4. The essentials of what is done can easily be
lost in the technical details of how it is done.
Algorithms and Flowcharting
Flowchart Symbols:

1. Terminal Symbol
- used to designate the beginning and end
of a program.
2. Input Symbol or
- represents an instruction to an input
device
3. Processing Symbol
- used to represent a group of program
instructions that perform a processing
function or activity such as mathematical
operations or logical comparisons.
Algorithms and Flowcharting

Flowchart Symbols:

4. Output Symbol or
- represents an instruction to an
output device.
5. Decision Symbol
- denotes a point in the program
where more than one path can be
taken or used to designate a decision
making process.
Algorithms and Flowcharting
Flowchart Symbols:

6. Flow lines and Arrowheads


- used to show reading order or sequence in
which flowchart symbols are to be lead.
- show the direction of processing of data
flows.
7. On-page Connector
- non processing symbol
- used to connect one part of the flowchart to
another without drawing flow lines within page.
Denotes an Denotes an
A A exit
entry
Algorithms and Flowcharting
Flowchart Symbols:
8. Off-page Connector A
A
- non processing symbol
- used to connect one part of the flowchart to another
without drawing flow lines not within the same page.

9. Predetermined Symbol
- used as a subroutine symbol
- inner procedure needs to be repeated
several times.
Most Commonly Used Symbol
Sample Flowchart
Sample Flowchart
Sample Flowchart
Sample Flowchart
Sample Flowchart
System Flowcharts

A system flowchart shows in


general terms the operations
that will be performed on
information in an information
system. The arrows on a system
flowchart show the direction that
data will flow in around the system
rather than the order in which the
operations will be carried out.
System Flowchart Symbols
System Flowchart Example : Car Repair Garage
OTHER TYPES OF FLOWCHARTS

High-Level Flowchart
A high-level (also called first-level or top-down) flowchart shows the major
steps in a process. It illustrates a "birds-eye view" of a process, such as
the example in the figure entitled High-Level Flowchart of Prenatal Care. It
can also include the intermediate outputs of each step (the product or
service produced), and the sub-steps involved. Such a flowchart offers a
basic picture of the process and identifies the changes taking place within
the process. It is significantly useful for identifying appropriate team
members (those who are involved in the process) and for developing
indicators for monitoring the process because of its focus on intermediate
outputs.
Most processes can be adequately portrayed in four or five boxes that
represent the major steps or activities of the process. In fact, it is a good
idea to use only a few boxes, because doing so forces one to consider the
most important steps. Other steps are usually sub-steps of the more
important ones.
Detailed Flowchart

The detailed flowchart provides a detailed picture of a


process by mapping all of the steps and activities that
occur in the process. This type of flowchart indicates
the steps or activities of a process and includes such
things as decision points, waiting periods, tasks that
frequently must be redone (rework), and feedback
loops. This type of flowchart is useful for examining
areas of the process in detail and for looking for
problems or areas of inefficiency. For example, the
Detailed Flowchart of Patient Registration reveals the
delays that result when the record clerk and clinical
officer are not available to assist clients.
Sample Problem

1. Make a flowchart that will input the


length and width of a rectangle. Output the
perimeter.
2. Make a flowchart that will compute for
the area of a circle given a radius of 9 cm.
3. Make a flowchart that will ask the user to
input the radius of a circle. compute for the
area of a circle and output it.
Sample Problem

4. Make a flowchart that will input 2


integers and will output the sum and the
difference
. of the 2 integers.

5. Make a flowchart that will input 5


integers. Output the sum of the inputted
integers.
Sample Problem 6

Make a flowchart that


will input an integer.
If the integer is
negative determine
the square of that
integer and print,
otherwise just print
the inputted integer.
Sample Problem
7. Make a flowchart that will compute for
the area of a triangle whose base = 5 and
height = 12. Output the computed area.
8. Make a flowchart that will input a degree
in centigrade and will output degree in
fahrenheight.
9.Make a flowchart that will input 2
integers. Determine the sum, if the sum is
greater than or equal to 20 then output
the second integer, otherwise, output the
first integer.
Problem 10

At the University of Palompon,


every unit is worth P475 in
enrollment fees. An additional
15% of the TUITION FEE is paid
as miscellaneous fee. Make a
flowchart that will input the
number of UNITS a student is
enrolled and output the TOTAL
TUTION FEE to be paid.
Problem 11

Any customer whose total


PURCHASE is at least
P1000 will be given a
10% discount. Make a
flowchart that would
input the customer’s
PURCHASE and output his
net BILL.
Problem 12

Make a flowchart that will input the


monthly salary of Pedro and will
output his annual salary and tax
due. Compute his tax to be paid
based on the ff: rules: if the annual
salary is greater than or equal to
P60,000 the tax due is 15% of the
annual salary otherwise the tax
due is 5% of the annual salary.
Problem 13

A taxi charges P1.50 for the


first 300 meters and P1 for
every 200 meters thereafter.
Any distance covering the
next 200 meter zone is still
charged P1. Make a program
that would input the
DISTANCE a trip took and
output the FEE.
Problem 14

Assignment

Every leap year is divisible by 4. However,


if a year is divisible by 100, it must also
be divisible by 400 for it to be a leap
year. Hence, 2000 is a leap year, but
1900 is not. Make a flowchart that will
input a value for YEAR (integer) and
output whether it is a “LEAP YEAR” or
“NOT A LEAP YEAR”.
Leap Year Problem
 Q: Is the year 2000 a leap year?
 A: Yes, because the rule is: in the
Gregorian calendar, leap years occur
in years exactly divisible by four,
except that years ending in 00 are leap
years only if they are divisible by 400.

 So, 1700, 1800, 1900, 2100, and 2200


are not leap years. But 1600, 2000,
and 2400 are leap years.
Begin

Are the last


No two digits of the Yes
year 00?

Is the year Is the year


No divisible by Yes No divisible by Yes
4? 400?

The year is a The year is a The year is a The year is a


not leap year leap year not leap year leap year

End
 main()
 {
 int year;
 printf("Enter a year(ex: 2005):");
 scanf("%d", &year);
 if(year%4==0)
 {
 if(year%100==0)
 {
 if(year%400==0)
 printf("The year %d is a LEAP YEAR", year);
 else
 printf("The year %d is NOT A LEAP YEAR", year);
 }
 else
 printf("The year %d is a LEAP YEAR", year);
 }
 else
 printf("The year %d is NOT A LEAP YEAR", year);
 getch();
 }
Problem 14

Make a flowchart that will


input 10 integers. Output the
sum of the inputted integers.
Lots of input and not good to
see. What if we have
hundreds, thousands or even
millions of inputs? How to
solve this problem?
Solution: Use Loops
When is loop required?

Repeating Statement Execution

Loop is a sequence of instructions that


is continually repeated until a
certain condition is reached.
It is used to repeat execution of
block of code.
Execution of Loops

Typically this is done inside a loop


statement of some sort using a variable
as a counter to keep track of which
character is to be checked. The counter
variable may be incremented by one,
each time through, so that the first
element is examined the first time
through the loop, the second element
the second time, and so forth. Being
able to repeatedly execute a statement
or compound statement is an essential
feature of programming.
Introduction to Loops
 What is the difference between a while
and a do / while loop?
 What is a sentinel value?
 How do you pick a good sentinel value?
 Would you ever intentionally want an
infinite loop?
 Why shouldn’t you generally use floats or
doubles as control variables in loops?
 What are the two possible values of a
Boolean variable?
Loops
There are several loop types.
Depending on situation, sometimes
it is better to use one kind of loop
than another, but every loop can
be transformed into one another.
This is not so important for
beginners, you just need to know
that there is good and better use
of particular loop.
Parts of a Loop (reminder)

Every loop will always contain three main


elements:
 Priming: initialize your variables.

 Testing: test against some known


condition.
 Updating: update the variable that
is tested.

127
Example
Loop types (reminder)
Indefinite Loop:
 You do not know ahead of time how many
times your loop will execute.
 For example, you do not know how many
books a person might order.
Definite Loop:
 You know exactly how many times you want
the loop to execute.
 not at compile time necessarily

129
Control Flow
Control Structures - specify the sequence of
execution of a group of statements.
3 Types:
1. Sequential
2. Conditional
3. Iterative

Sequential - organized such that statements


are executed in sequence, i.e., one after
the other in the order of their appearance
in the source code.
Control Flow
Conditional Control Structure - organized
in such a way that there is always a
condition that has to be evaluated first.
The condition will either evaluate to a
true or false.
2 Types:
1. if statement (including if-else and
nested if)
2. switch case statement
Operators
Conditional Operators
- expressions that evaluates to true or false.

Operator Use Result


> op1 > op2 true if op1 is greater than op2
>= op1 >= op2 true if op1 is greater or equal
to op2
< op1 < op2 true if op1 is less than op2
<= op1 <= op2 true if op1 is less or equal to
than op2
== op1 == op2 true if op1 is equal to op2
!= op1 != op2 true if op1 is not equal to
op2
Operators
Logical Operators
- used in boolean expressions and consists of
logical “and", “or" and “not".
0-> false and 1-> true or nonzero digit

Operator Use Result


&& op1 && op2 true if op1 and op2 are both
true
|| op1 || op2 true if either op1 or op2 is
true
! !op1 op1 is false if its original
value is true and vice
versa
Control Flow

if Selection Structure
- performs an indicated action only
when the condition is true, otherwise
the action is skipped.
Syntax: if (<expression>)
<statement>

T Statement
Conditio
n
Example:
Write a program that will allow the user to input an
integer value. If the value is greater than or equal to
zero, print the word “POSITIVE”.
Begin

num

if “POSITIVE”
num>=0

End
Control Flow
Other Problems:
1. Write a program that will allow the user
to input a number. Print the word
NEGATIVE if the number is a negative
value.
2. Write a program to input two integers.
Thereafter, the program should determine
if these two numbers are equivalent. If
they are equivalent, print the word
EQUIVALENT.
3. Write a program that will input an integer
and determine if it is an even number.
Control Flow

if-else Selection Structure


- allows the programmer to specify that
different actions are to be performed when
the condition is true than when the
condition is false.
- If condition evaluates to true, then
statementT is executed and statementF is
skipped; otherwise, statementT is skipped
and statementF is executed.
Control Flow
 Syntax:
if (condition)
T Statement
statementT; Conditio
n
else
statementF; F
Statement
Good Programming Practice
Indent both body
statements of an if...else
statement.

If there are several levels


of indentation, each level
should be indented the
same additional amount of
space.
Control Flow
Problems:
1. Write a program that will allow the user to
input a number. Print the word NEGATIVE if the
number is a negative value otherwise print
POSITIVE if the number is positive.
2. Write a program to input two integers.
Thereafter, the program should determine if
these two numbers are equivalent. If they are
equivalent, print the word EQUIVALENT
otherwise print the word NOT EQUIVALENT.
3. Write a program that will input an integer and
determine if it is an even or odd number.
Control Flow
 if-else (multiple alternatives)
- The conditions in a multiple-alternative
decision are evaluated in sequence until a
true condition is reached. If a condition is
true, the statement following it is
executed, and the rest of the multiple-
alternative decision is skipped. If a
condition is false, the statement following
it is skipped, and the condition next is
tested. If all conditions are false, then the
statement following the final else is
executed.
Control Flow
 Syntax:
Conditio T Statement
if (condition) n
statement; F
else if (condition) T Statement
Conditio
statement; n
else if (condition) F

statement; Conditio T Statement

else n
F
statement;
Statement
Control Flow
Example:

Make a C program that will accept a score


and display based on the following
conditions:
Score Display
86 – 100 (inclusive) Very Good
75 – 85 (inclusive) Fair
Below 75 Failed
Control Flow

 Nested-if Statement
 Syntax:
if (condition)
{
if (condition)
statement;
else
statement;
}
Good Programming Practice
A nested if...else statement can
perform much faster than a series
of single-selection if statements
because of the possibility of early
exit after one of the conditions is
satisfied.
In a nested if...else statement, test the
conditions that are more likely to be
true at the beginning of the nested
if...else statement. This will enable the
nested if...else statement to run faster
and exit earlier than testing
infrequently occurring cases first.
Good Programming Practice

Always putting the braces in an if...else


statement (or any control statement) helps
prevent their accidental omission,
especially when adding statements to an if
or else clause at a later time. To avoid
omitting one or both of the braces, some
programmers prefer to type the beginning
and ending braces of blocks even before
typing the individual statements within the
braces.
Common Programming Error

Forgetting one or both of the


braces that delimit a block can
lead to syntax errors or logic
errors in a program.
Common Programming Error

Placing a semicolon after the


condition in an if statement leads to
a logic error in single-selection if
statements and a syntax error in
double-selection if...else statements
(when the if part contains an actual
body statement).
Control Flow

Example

Make a C program to input an


integer. Output the integer if it
is a positive even integer.
Control Flow

Leap years occur in years exactly


divisible by four, except that years
ending in 00 are leap years only if
they are divisible by 400. Hence, 2000
is a leap year, but 1900 is not. Make a
flowchart that will input a value for
YEAR (integer) and output whether it
is a “LEAP YEAR” or “NOT A LEAP
YEAR”.
Control Flow

Switch Statement

Is a selection statement
provided by C. It has a built in
multiple branch and work
similar to if else ladder
generally.
Control Flow

Switch Statement
- the controlling expression, an
expression with a value of type int
or type char, is evaluated and
compared to each of the case labels
in the case constant until a match is
found. A case constant is made of
one or more labels of the form case
followed by a constant value and a
colon.
Control Flow

When a match between the value of the


controlling expression and a case label
value is found, the statement following
the case label are executed until a
break statement is encountered. Then
the rest of the switch statement is
skipped. A default case is allowed which
will be executed if no other statement
match is found.
Control Flow

It is defined by C that a
complier must support a
minimum of 257 case
statements in C89 and 1023
case statements in C99
though you may want to keep
this to minimum in
consideration of efficiency.
Control Flow
Switch Statement
Syntax:
switch (controlling expression)
{
case constant: statement;
break;
case constant: statement;
break;
. . .
default: statement;
}
Control Flow

Break

- exits from the lowest-level


loop in which it occurs.
- used for early exit from the
loop, or for exiting a forever
loop
Control Flow
Continue
– causes immediate loop iteration,
skipping the rest of the loop
statements
- jumps to the loop test when used
with while or do
- jumps to loop increment, then test
when used with for
- does not exit the loop (unless next
loop is false)
BREAK and CONTINUE
You can exit out of a loop at any time using the break
statement. This is useful when you want a loop to stop
running because a condition has been met other than the
loop end condition.

#include<stdio.h>

int main()
{
int i;
while (i < 10)
{
i++;
if (i == 5)
break;
}
return 0;
}
Control Flow
Example

Make a C program that prompts the


user to input 2 integers and will
perform the following operations:
Choice Operation
1 ADDITION
2 SUBTRACTION
3 MULTIPLICATION
Solution
#include<stdio.h>
#include<conio.h>

main()
{
int num1, num2, sum, diff, prod, choice;
printf("Enter the first number:");
scanf("%d", &num1);
printf("Enter the second number:");
scanf("%d", &num2);
printf("Enter your choice (1-> ADD, 2-> SUBTRACT, 3->MULTIPLY:");
scanf("%d", &choice);
switch(choice) {
case 1: {
sum=num1+num2;
printf("The sum of 2 numbers is %d", sum);
break;
}
case 2: {
diff=num1-num2;
printf("The difference between 2 numbers is %d", diff);
break;
}
case 3: {
prod=num1*num2;
printf("The product of 2 numbers is %d", prod);
break;
}
default:
printf("Wrong Choice!!!"); }
getch();
Problem 14

Make a flowchart that will


input 10 integers. Output the
sum of the inputted integers.
Lots of input and not good to
see. What if we have
hundreds, thousands or even
millions of inputs? How to
solve this problem?
Solution: Use Loops
When is loop required?

Repeating Statement Execution

Loop is a sequence of instructions that


is continually repeated until a
certain condition is reached.
It is used to repeat execution of
block of code.
Execution of Loops

Typically this is done inside a loop


statement of some sort using a
variable as a counter to keep track
of which character is to be
checked. The counter variable may
be incremented by one, each time
through, so that the first element
is examined the first time through
the loop, the second element the
second time, and so forth.
Execution of Loops

Being able to repeatedly


execute a statement or
compound statement is
an essential feature of
programming.
Introduction to Loops
 What is the difference between a
while and a do / while loop?
 What is a sentinel value?

 How do you pick a good sentinel


value?
 Would you ever intentionally want an
infinite loop?
 Why shouldn’t you generally use floats
or doubles as control variables in
loops?
Loops

There are several loop types.

Depending on situation,
sometimes it is better to use
one kind of loop than another,
but every loop can be
transformed into one another.
Loops

This is not so important


for beginners, you just
need to know that there
is good and better use of
particular loop.
Control Flow
A loop has the following components:

1. Initialization of variables – setting an initial


value of zero before the loop statement is reached.
2. Condition/testing – (that would evaluate to
either true or false) the condition to check is
usually made on the current value of the variable
initialized in (1) for it controls the loop repetition.
3. Body – statements that are repeated in the loop.
4. Updating – a statement inside the body of the
loop that updates the value of the variable that is
initialized during each repetition.
Control Flow

3 Types:

1. do-while statement
2. while statement
3. for statement
Control Flow

do-while statement

- This loop executes a block of codes


as long as the specified condition is
true.
- It is a post checked loop because it
checks the controlling condition after
the code is executed.
Control Flow
Syntax:
do
{
statement/s;
} while (loop repetition condition);

Example:
c=1;
do
{
printf(“Hello World\n”);
c++;
} while (c<=5);
Control Flow

while statement

- Like do-while, this will execute a


block of codes while the given
condition is true.
- It is a pre-checked loop because it
checks the controlling condition first
before the code is executed.
Control Flow
Syntax:
while (loop repetition condition)
{
statement/s;
}

Example:
c=1;
while (c<=5)
{
printf(“Hello World\n”);
c++;
}
Control Flow
for statement
- a kind of loop command wherein the
execution of the statement does not
depend on another instruction.
Syntax:
for (initialization expression; loop repetition
condition; update expression)
{
statement/s;
}
Control Flow

Example

for (c=1; c<=5; c++)


printf(“Hello World\n”);
Loop types (reminder)
Indefinite Loop:

 You do not know ahead of time how many


times your loop will execute.
 For example, you do not know how many
books a person might order.
Definite Loop:

 You know exactly how many times you


want the loop to execute.
 not at compile time necessarily
176
Infinite Loop

You can still end up with an infinite


loop when using for loops

for (counter = 0; counter <= 10;


counter--)

177
Types of Loop

The following are the


different types of
Loops
Basic For Loop Syntax
For loops are usually used when we know
exactly how many times we need to execute
repeating block of code. It is also good for
creating definite loops.
int counter;
1. Priming: Set 2. Test Condition: 3. Update: Update the
the start value. Set the stop value. value.

for (counter =1;counter <= 10;counter++)


System.out.println (counter);
Note that each section is
separated by a semicolon.
179
for Loop Flowchart

1. Priming
Set counter=1

2. Test TRUE 3a. print counter


counter
3b. Update counter++;
<= 10

FALSE

180
For Loop Variations

 The limit can be a variable:


for ( i = 1; i <= limit; i++)
 This counts from 1 to limit
 Update may be negative:
for (i = 100; i >= 1; i--)
 This counts from 100 to 1.
 Update may be greater than 1:
for (i = 100; i >= 5; i -= 5)
 This counts from 100 to 5 in steps of 5
181
While Loop
While loop is usually used when we do not know
exactly how many times we need to execute
repeating block of code

while (*)
{
/* repeating block of code */
}

* Is a condition which is true or false. Ex.


Value> 5
Condition is checked at every iteration start.
If condition is true, execution will continue,
if it is false execution will break.
Do While
Do-while loop is usually used when we do not know
exactly how many times we need to execute repeating
block of code, but we know that we need to execute it
at least once.

do {
/* repeating block of code */
} while (*);

do-while is same as while loop with difference


that the condition is checked at every iteration
end. Consequence is that repeating block of
code in do-while loop is always executed at
least once.
Example
1. Make a flowchart that will input 10
integers. Output the sum of the
inputted integers.
2. Make a C rogram that will input 20
scores of students. Output the average
of the scores.
3. Make a C program to input 20
integers. Output the average of all
positive odd integers.
Additional Examples
4. Make a C program that will input
integers, positive and negative. The
flowchart/program will terminate if a
negative number is inputted. Output
the average of all positive integers
inputted.
5. Make a C program to input 10 names
of student. Each student has 5 exam
scores. Determine the average exam
score of each student.
Additional Examples
6. Make a C program to input 10
integers. Output the biggest integer.

7. Make a C program to input 10


names of student. Each student has
5 exam scores. Determine the
average exam score of each
student. Output the highest average
exam score.
Additional Examples
Make a C program to input N number of
integers. Output the average of all
positive odd integers.

Modify your program so that every time


you run, it will prompt the user to
continue or not. If you press Y it will
run again, otherwise if you press any key
it terminates.
Additional Examples
1. Make a C program to input 10
names of student. Each student has
5 exam scores. Determine the
average exam score of each
student. Output the highest average
exam score.

2. Make a C program to determine the


Least Common Denominator of the
2 inputted numbers.
Array
The C language provides a capability that
enables the user to define a set of ordered
data items known as an array.
Suppose we had a set of grades that we wished
to read into the computer and suppose we
wished to perform some operations on these
grades, we will quickly realize that we cannot
perform such an operation until each and
every grade has been entered since it would
be quite a tedious task to declare each and
every student grade as a variable especially
since there may be a very large number.
Array

In C we can define variable


called grades, which
represents not a single value
of grade but a entire set of
grades. Each element of the
set can then be referenced by
means of a number called as
index number or subscript.
Arrays
Array –is a collection of same type
elements under the same variable
identifier referenced by index
number.

Arrays are widely used within


programming for different
purposes such as sorting,
searching and etc.
Arrays
Syntax of Array Declaration:
Data_type array_name[size];

Where:
data_type – valid data type
array_name – any user-defined
identifier
size – number of elements in the array
Example: int num[5];
ARRAY
a data structure which hold multiple variables of
the same data type.

IN SHORT, ARRAY IS
–Structures of related data items
–Static entity – same size throughout
program

To refer to an element, specify


–Array name
–Position number
Format:
arrayname[ position number ]
–First element at position 0 (must
always be put in mind)

Example: n element array named c:

c[ 0 ], c[ 1 ]...c[ n – 1 ]
Arrays

num[0] -45
num[1] 2
num[2] 4
num[3] 72
num[4] 1

Subscript – the position number contained within


square brackets.
- must be an integer or an integer expression.
Arrays

Types of Array

1. Single Dimensional

2. Multidimensional
Initialization of Array

We can initialize the elements in the array


in the same way as the ordinary variables
when they are declared.

The general form of initialization of arrays

type array_name[size]={list of values};

The values in the list care separated by commas, for example the
statement
Initialization of Array
int number[3]={0,0,0};

Will declare the array size as an array of


size 3 and will assign zero to each
element. If the number of values in the
list is less than the number of
elements, then only that many
elements are initialized. The remaining
elements will be set to zero
automatically.
Initialization of Array

In the declaration of an array the size may


be omitted, in such cases the compiler
allocates enough space for all initialized
elements. For example the statement,

int counter[]={1,1,1,1};

Will declare the array to contain four


elements with initial values 1. this approach
works fine as long as we initialize every
element in the array.
Initialization of Array
Initializing an array

Using the for loop:


int n [ 10 ] , i ;
for (i = 0; i < 10; i ++)
n[i]=0;

The initialization above is the same as:

int n [ 10 ] = { 0 } ;
Initialization of Array
Storing String in Character Arrays

Ex: char string1[] = “first”; or


char string1[] = { ‘f’ , ’i’ , ’r’ , ’s’ , ’t’ , ’\0’ };
or
scanf(“%s”, string1);
printf(“%s”, string1);
Initialization of Array
Multi dimensional Arrays

Often there is a need to store and manipulate two


dimensional data structure such as matrices & tables. Here
the array has two subscripts. One subscript denotes the
row & the other the column.

data_type array_name[row_size][column_size];

int m[10][20]

Here m is declared as a matrix having 10 rows( numbered


from 0 to 9) and 20 columns(numbered 0 through 19). The
first element of the matrix is m[0][0] and the last row last
column is m[9][19]
Initialization of Array
Elements of multi
dimension arrays:

A 2 dimensional array marks [0][0] marks [0][1]

marks [2][2] is shown. 90 75


The first element is given marks [1][0] marks [1][1]

by marks [0][0] contains


85 67
90 & second element is
marks [0][1] and
contains 75 and so on.
Initialization of Array

Like the one dimension arrays, 2 dimension arrays may


be initialized by following their declaration with a list of
initial values enclosed in braces

Example:

int table[2][3]={0,0,0,1,1,1};

Initializes the elements of first row to zero and second


row to 1. The initialization is done row by row. The
above statement can be equivalently written as

int table[2][3]={{0,0,0},{1,1,1}}
Array elements are like normal
variables

c[ 0 ] = 3;
printf( "%d", c[ 0 ] );

Perform operations in subscript. If x


equals 3

c[ 5 - 2 ] == c[ 3 ] == c[ x ]
Declaring multiple arrays of same
type

Format similar to regular


variables

Example:

int b[ 100 ], x[ 27 ];
Points to Ponder

int n[ 5 ] = { 1, 2, 3, 4, 5 };

If not enough initializers, rightmost elements become 0


int n[ 5 ] = { 0 }
All elements 0
•If too many a syntax error is produced syntax error
•C arrays have no bounds checking

If size omitted, initializers determine it

int n[ ] = { 1, 2, 3, 4, 5 };

5 initializers, therefore 5 element array


Example

Make a C program to
create an array of 5
numbers. Output the
numbers.

Solution:
Solution

#include <stdio.h>

main()
{
int x, num[5];

for(x=0; x<=5; x++)


{
printf("Enter a number%d:",x);
scanf("%d", &num[x]);
}

for(x=0; x<=5; x++)


{
printf("The content of num[%d] is %d\n",x, num[x]);
}
getch();
}
Example

#include <stdio.h>
#include <conio.h>
main()
{
char word[20];

word[0]='H';
word[1]='e';
word[2]='l';
word[3]='l';
word[4]='o';
word[5]=‘\0’; //slash zero
printf("The contents of word[] is --> %s\n", word);
getch();
}
Example

#include <stdio.h>

main()
{
int x, num[5];

num[0]=1;
num[1]=2;
num[2]=3;
num[3]=4;
num[4]=5;
num[5]=0;
for(x=0; x<=5; x++)
{
printf("The contents of num[%d] is --> %d\n",x,
num[x]);
}
getch();
}
Problem

Make a C program to
create an array of 5
names. Output the
names.

Solution:
Solution
 #include<stdio.h>
 #include<conio.h>
 #include<string.h>

 main()
 {
 int x;
 char name[5][15];
 fflush(stdin);
 for(x=0; x<5; x++)
 {
 fflush(stdin);
 printf("Enter name%d:", x);
 gets(name[x]);
 }
 fflush(stdin);
 for(x=0; x<5; x++)
 {
 fflush(stdin);
 printf("Name is %s", name[x]);
 printf("\n");
 }
 getch();
 }
/* Histogram printing program */
#include <stdio.h>
#define SIZE 10

main()
{
int n[ SIZE ] = { 19, 3, 15, 7, 11, 9, 13, 5, 17, 1 }; /* Initialize array*/
int i, j;

printf( "%s%13s%17s\n", "Element", "Value", "Histogram" );

for ( i = 0; i <= SIZE - 1; i++ ) { /* Loop*/

printf( "%7d%13d ", i, n[ i ]) ;

for ( j = 1; j <= n[ i ]; j++ ) /* print one bar */


printf( "%c", '*' ); /*Print*/

printf( "\n" );
} /* End of for loop i */

getch();
} /* END Main Program */
Program Output:

Element Value Histogram


0 19 *******************
1 3 ***
2 15 ***************
3 7 *******
4 11 ***********
5 9 *********
6 13 *************
7 5 *****
8 17 *****************
9 1 *
Other Application of Array

The following are the


most common
applications of array
Arrays
Searching Arrays
Searching – the process of finding a particular
element of an array.
Linear search – compares each element of the
array with the search key.
Binary search – locates the middle element
and compares it to the search key. If they
are equal, the search key is found and the
array subscript is returned. Otherwise, it
eliminates one half of the elements in a
sorted array after each comparison.
Searching Arrays
Examples:
1. Create an array of N integers.
Determine if 13 is within the
array.
2. Create an array of N integers.
Input an integer to be searched in
the array. Output whether the
integer to be searched exist or
not.
Searching Arrays (Con’t)

3. Create an array of N
scores. Determine the
average and output all the
scores that are greater
than or the average scores.
Arrays

Sorting Arrays
Sorting data – placing the data into a
particular order such as ascending
or descending.
Example:
Write a program that sorts the
values in the elements of the 10-
element array a into ascending
order.
MULTI DIMENSIONAL ARRAYS

The arrays we have been using so far are called 1-


dimensional arrays because they only have what can be
thought of a 1 column of elements. 2-dimensional arrays
have rows and columns. Here is a picture which explains
it better:
1-dimensional array

0 1
1 2
2 3
2-dimensional array

0 1 2
0 1 2 3
1 4 5 6
2 7 8 9
You do get 3-dimensional arrays and more but they are
not used as often. Here is an example of how you declare
a 2-dimensional array and how to use it. This example
uses 2 loops because it has to go through both rows and
columns.
int a[3][3],i,j;
for (i = 0;i < 3;i++)
for (j = 0;j < 3;j++)
a[i][j] = 0;
What is a Magic Square?
Definition, Special Properties

A magic square is an arrangement of the


numbers from 1 to n^2 (n-squared) in an
nxn matrix, with each number occurring
exactly once, and such that the sum of the
entries of any row, any column, or any main
diagonal is the same. It is not hard to show
that this sum must be n(n^2+1)/2.
Magic Square Con’t

The simplest magic square is the 1x1


magic square whose only entry is
the number 1.
Magic Square Con’t

The next simplest is the 3x3 magic


square
Method for constructing a magic square of odd
order

Starting from the central column of the


first row with the number 1, the
fundamental movement for filling the
squares is diagonally up and right, one
step at a time. If a filled square is
encountered, one moves vertically down
one square instead, then continuing as
before. When a move would leave the
square, it is wrapped around to the last
row or first column, respectively.
Method for constructing a magic square of odd
order

Complete steps
Method for constructing a magic square of odd
order

Starting from other squares rather than


the central column of the first row is
possible, but then only the row and
column sums will be identical and result
in a magic sum, whereas the diagonal
sums will differ. The result will thus be a
semi magic square and not a true magic
square. Moving in directions other than
north east can also result in magic
squares.
You can start from any number rather than
1 and continue the same method to
derive various patterns of magic
squares.
Other Application of Multidimensional Array

1. Tic Tac Toe Game


2. Number Puzzle Game
3. Can you think of other
applications?
Functions
Function – a subroutine that contains one or
more statements and performs a single
well-defined task.
2 Types:
1. Pre-defined – those functions written by
for us (by some other programmers).
2. User-defined – those functions that we
are going to write/implement by
ourselves.
Difference between the main
program and the function

Main Program Function

Input Output Input Output

scanf() printf() parameters return


Functions
 Function Syntax and Function Definition
 Syntax:
return_type function_name(parameter list)
{
local declaration;
...
statement/s;
}
Note: No function can have the same name as
the one of TC’s reserved words.
Functions
Where:
return_type = any standard data
type in C
parameter list – consists of
variables that receive the value of
the arguments used in the function
call.
Arguments – a value that is passed to
the function at the time that it is
called.
Functions
 Function Definition (With return type and
parameters)
 Syntax:
ftype fname(parameter list){
local declaration
executable statements
}
Example:
int add(int one, int two){
int sum;
sum = one + two;
return sum;
}
Functions

 Example:
int func(int one, int two)
{
int sum;
sum=one + two;
return sum;
}
Functions
 Functions Returning Values
The return keyword has two important
uses:
1. It can be used to cause an immediate exit
from the function it is in. That is, the
return will cause program execution to
return to the calling function as soon as it
is encountered.
2. It can also be used to return a value.

Note: The return statement can also be


used without any value associated with it.
Functions
 Function Definition (Without return type
and parameters)
 Syntax:
void fname(void)
{
local declarations
executable statements
}
Example:
void hello(void){
printf(“Hello”);
}
Functions
 Function Definition (Without return type
and with parameters)
 Syntax:
void fname(parameters list){
local declarations
executable statements
}
Example:
void add(int one, int two){
int sum;
sum=one + two;
printf(“Sum=%d”, sum);
}
Parameter Passing

 Two types:
1. Pass by value - a copy of the data is
passed to the subroutine, so that no
matter what happens to the copy the
original is unaffected.
2. Pass by reference - the variable
argument is renamed, not copied. Only
the address of the argument is passed
to the function.
C Pointers
 Pointers – enable programs to simulate
call by reference, and to create and
manipulate dynamic data structures, i.e..
Data structures that can grow and
shrink, such as linked lists, queues,
stacks and trees.
Pointer – a variable that contain memory
addresses as their values.
- It contains an address of a variable
that contains a specific value.
C Pointers
 Indirection – means referencing a value
through a pointer.
 Declaration:

data_type *variable_name;
Ex:
int *ptr; /*means ptr is a pointer to an
integer value*/
* - indicates that the variable being
declared is a pointer.
C Pointers
 Directly and Indirectly referencing a
variable.
count
count directly references a
7 variable whose value is 7

ptr count
ptr indirectly references a
7 variable whose value is 7
C Pointers
 Pointer Operators
Address operator (&) – a unary operator
that returns the address of its operand.
Example:
int y = 5;
int *yptr;
yptr = &y; /* assigns the address of the
variable y to pointer variable yptr */
C Pointers
 Graphical representation of a pointer to an
integer variable in memory.
500000
yptr y 500002 5 y
500004
5
500006
500008
500010 500002
500012
C Pointers
 Indirection operator (*) – also known as
dereferencing operator, returns the value
of the object to which its operand (i.e., a
pointer) points.
Example:
printf(“%d”, *yptr); /* prints the value
of variable y which is 5 */
C Pointers

 Pointers can be assigned to one another


if both pointers are of the same type.
Example:
x 5
int *ptr1, *ptr2;
int x=5;
ptr1=&x; ptr1 ptr2

ptr2=ptr1;/lets ptr2 point to the variable


pointed to by ptr1*/

You might also like