Introduction to Programming: C

Download Report

Transcript Introduction to Programming: C

Patrick J. McSweeney
[email protected]
MW: 5 – 8:30pm

Computer Elements
◦ Hardware
◦ Software



Programming
Our First Program
Our Second Program
Computer
• CPU: executes computer
instructions.
• RAM: Short term storage.
Person doing Arithmetic
• Brain (minus memories)
• Paper to write on.
• Hard drive:
Long-term storage
• Textbook - has problems.
• I/O: Keyboard,
mouse, monitor,
• Eyes, hands, pencil…

Central Processing Unit
◦ Little more than a complex calculator
◦ Repeatedly performs the same basic steps
 Fetch
 Decode
 Execute
◦ Even though we call this the “brain” its really quite
dumb, no decision making only does what its told.
◦ Has many registers to hold small amounts of data
 Add R1 R2

Random Access Memory
◦ Form of memory
◦ Volatile : loss of power wipes away data
◦ Short term memory.

To run a program (saved on your hard drive).
It must first be copied to RAM, to be ‘fetched’
by the CPU.



Magnetic storage has
mechanical components
Non-Volatile: Permanent storage (without
power memory remains).
Large (1GB= 1 billion bytes, 1TB = 1 trillion
bytes) but slow-er.


Input-Output: Ways to move data into and
out-from.
Monitors, keyboard, mouse, network
(modem), USB devices, speakers, printer,



Programs are binary, executable files run by
the CPU.
A program is a sequence of binary (1/0)
instructions that are interpretable by a CPU.
Common program examples: Internet
Explorer, Microsoft Word, PowerPoint, Excel;
ITunes, etc.
All Programs
System Calls
Operating System (Mac OS, Windows, Linux,
Unix)
Hardware



Operating systems are special programs that
have direct access to a computer’s hardware.
Operating Systems are in charge of running
programs.
A program being run by the OS that needs to
use hardware uses system calls.

Programming Languages can be divided into
two different classes:
◦ High Level Language: C (what we will be learning),
Java, C++, C#, Cobol, Pascal.
High level languages are designed to be “readable”
for humans.
◦ Assembly Language: Binary computer instructions
for the CPU.
Assembly level languages are designed to be
readable to the machine.


An algorithm is a series of steps which solve
a problem or perform a particular task.
Source code is an implementation of an
algorithm.
Algorithm for checking my email:
1)Turn on my computer
2)Login to my computer
3)Open an internet browser
4)Enter the URL for my online mail
5)Hit enter to go there
6)Enter my user name and password
7)Select OK

Form groups of 2 or 3 and write an algorithm
for one of the following tasks:
◦ How to make a peanut butter and jelly sandwich.
◦ How to tie your shoelaces.
◦ How to write a letter.
• Try to get at least 10 steps. We’ll take 10 – 15
minutes.
Source
Code

Compil
er
Assembl
y Code
A compiler is a program takes as input a high
level language document and outputs
assembly level documents.
Assemb
ly
Assemb
ly

Linke
r
Executabl
e
A linker is a program that takes assembly
documents and combines them into a single
executable file.

Syntax Error: An error that breaks our syntax
rules is caught during compilation:
“She; was I friend”

Semantics Error: An error that breaks
common sense may not be caught until the
program runs:
“The pink nose flew to the country.”


Syntax: Defines the structure of a source code
document. Is a set of rules that outline what
are acceptable combination of symbols.
Semantics: reflects the meaning of programs.
“Jack kicks a red ball.”
Syntax:
“Jack”
Subject
“ball”.
object.
“kicks”
verb
“red”
adjective
Semantics

Get together with your groups of 2 or three
and create sentences which are:
◦ Syntactically incorrect.
◦ Semantically incorrect, but syntactically correct.
source.c
source.o
Start
Edit
Source
File
Compile
Yes
Synta
x
Errors
?
source.e
xe
No
Link
Execute
No
Correc
t?
Yes
Done
1
2
3
4
5
6
7
#include <stdio.h>
int main (void)
{
//A comment
printf(“Welcome to CPS 196! \n”);
return 0;
}
File: cps196.c
1. #include <stdio.h>
This is called a preprocessor directive.
stdio.h tells the compiler about the printf
command on line 5 in our program.
As the course progresses we will learn
about more preprocessors.
2. int main(void)

This marks the opening of our program. It tells the
compiler that what follows between { and } is our code.

All executable programs in C will have an “int main (void)”

The “int” stands for integer. It implies that at the end of
this program we will return a whole number.

The void tells the compiler that this program takes no
parameters (inputs).
3. {
This is the opening bracket for our program.
4. // A comment



Sometimes it is useful to write notes in our
programs.
These notes are ignored by the compiler.
Usually these notes are for ourselves so we
can remember what we did if we have to
come back and look at our source code again.
5. printf(“Welcome to CPS 196! \n”);




The printf command displays messages to
the user of our program.
printf takes a String as a parameter (input).
The string is displayed.
“\n” is a special character that means put a
new line here.
6. return 0;



Here we mark the end of our program by
returning an integer to the operating system.
0 indicates a successful execution
Other integers can be used to indicate errors
that may have arose.
1
2
3
4
5
6
7
#include <stdio.h>
int main (void)
{
int value;
printf(“Please enter a number: ”);
scanf(“%d”, &value);
printf(“You entered a: %d! \n”, value);
return 0;
}
File: cps196.c
•
•
int value;
“int” here again means integer (whole
number).
value is a container called a variable that can
hold an integer. We say that value has type
integer.
•
•
•
•
•
scanf(“%d”, &value);
“scanf” is the opposite of “printf()”.
“printf” displays a data to the screen.
“scanf()” gets input from the keyboard.
“%d” is a special character that tells scanf to
try and get an integer from the keyboard.
&value is a way of saying store the result
from the keyboard in variable value.
Lecture 1 Terms & Concepts









Compiler
High level language
Assembly language
Program
Operating System
CPU
RAM
Hard drive
Input/output







Linker
Syntax & Semantics
Algorithm
General work flow
“int main(void)
“printf”
Variable