Transcript miles

Review
Ch 1~2
Overview of
Computers and
C Programming
Dr. J.-Y. Pan
Dept. Comm. Eng.
Nat. Chung Cheng Univ.
http://ant.comm.ccu.edu.tw
[email protected]
Outline
•
•
•
•
•
Von Neumann architecture
Computer languages
Software developing method
Applying the method
Case study:
CONVERTING MILES TO KILOMETERS
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-2
Figure 1.3 Components of a Computer
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-3
Memory
• Memory cell
– an individual storage location
• Address
– relative position in memory
• Contents
– the data stored in a memory cell
• Stored program concept
– an ability to store program instructions in main memory
for execution
– We can change the computer’s operation by storing a
different program in memory
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-4
Figure 1.4
1000 Memory
Cells in Main
Memory
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-5
Von Neumann architecture
a definition from http://computing-dictionary.thefreedictionary.com/
• Has a random-access memory (RAM)
– which means that each successive operation
can read or write any memory location,
independent of the previous access.
• Has a central processing unit (CPU)
– The CPU has a set of registers and a set of
built-in operations (its instruction set).
– The CPU can interpret the contents of memory
either as instructions or as data according to the
fetch-execute cycle.
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-6
Central Processing Unit
• Retrieves each instruction in sequence
(called fetching an instruction)
• Interprets the instruction to determine what
should be done and then retrieves any data
needed to carry out that instruction
• Performs the actual manipulation, or
processing, of the data it retrieved
• Store the results in main memory
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-7
Computer languages
• Software developers rarely write in the
language directly understood by a computer
– The machine language is a collection of binary
numbers, not easy to understand by human
– It is not standardized, different for different CPU
• Hence, write in High-level languages
– That combine algebraic expressions and
symbols taken from English
– Computers do NOT understand it…
– Translation… By a compiler
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-8
Figure 1.12
Entering, Translating,
and Running
a High-Level Language
Program
記得,要常常存檔
The loader must copy all its
instructions into memory and
direct the CPU to begin execution
with the first instruction.
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-9
Figure 1.13 Flow of Information During Program
Execution
As the program executes, it takes input data from one
or more sources and sends results to output and/or
secondary storage devices.
Although the instructions normally are executed in
sequence, it is possible to have the CPU skip over
some instructions or execute some instructions more
than once.
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-10
Software development method
• Specify the problem requirements
– State the problem clearly and gain a clear
understanding of what is required for its solutions
• Analyze the problem
– Identify the problem Input/Output/Extra_requirements
• Design the algorithm to solve the problem
– Develop a list of steps (called algorithm) to solve it
• Implement the algorithm
– Convert each algorithm step into statements in C
• Test and verify the completed program
• Maintain and update the program
– Modify a program to remove previously undetected
errors and to keep it up-to-date
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-11
1.5 APPLYING THE SOFTWARE
DEVELOPMENT METHOD
CASE STUDY
CONVERTING MILES TO KILOMETERS
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-12
1. Problem (Specify the problem requirements)
–
Your summer surveying job requires you to study
some maps that gives distances in kilometers and
some use miles. You and your coworkers prefer to
deal in metric measurements. Write a program that
performs the necessary conversion.
2. Analysis (Analyze the problem)
–
–
–
Purpose : Conversion from miles to kilometers.
To solve this problem, you need to know the
relationship between miles and kilometers.
Data Requirements
•
•
•
Problem input :miles /* The distances in miles */
Problem output:kms /* The distances in kilometers */
Relevant Formula : 1 mile = 1.609 kilometers
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-13
3. Design (Design the algorithm to solve the
problem)
– Algorithm
1. Get the distance in miles
2. Convert the distance to kilometers
3. Display the distance in kilometers
– Algorithm with refinements
1. Get the distance in miles
2. Convert the distance to kilometers
2.1 The distance in kilometers is 1.609 times the distance in
miles
3. Display the distance in kilometers
4. Implementation (Figure 1.14) (talks in Ch3)
5. Testing
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-14
Figure 1.14 Miles-to-Kilometers Conversion
Program
Step 1
Step 2
Step 3
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-15
Question?
• A good question deserve a good grade…
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-16
Outline
(Part 2)
• C language elements
• A running program, what happens?
• Syntax and semantics
– Input and output
– Arithmetic operators
• Program-Controlled Input and Output Files
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-17
Figure 2.1 C Language Elements in
Miles-to-Kilometers Conversion Program
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-18
2.1 C Language Elements
• Preprocessor
– a system program that modifies the text of a C
program before it is compiled
• Preprocessor directives
– commands that provides instructions to the C
preprocessor
• Library
– a collection of useful functions and symbols that
may be accessed by a program
– each library has a standard header file
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-19
Preprocessor Directives(1/2)
• #include
– gives a program access to a library
• <stdio.h>
– standard header file
– include printf 、 scanf
#include <stdio.h>
– notify the preprocessor that some names used
in the program are found in <stdio.h>
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-20
Function Main(1/2)
Contains two parts
Part 1: Declarations
– the part of a program that tells the compiler the
names of memory cells in a program
Part 2: Executable statements
– program lines that are converted to machine
language instructions and executed by the
computer
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-21
Function Main (2/2)
• Syntax: int
main(void)
{
/* function body */
printf(“Hello world\n”);
return(0);
}
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-22
Reserved Words
• A word that has special meaning in C
Reserved Word
Meaning
int
main function returns an integer value
void
main function receives no data from the
operating system
double
the memory cells store real numbers
return
control from the main function to the
operating system
• Appendix E  背起來
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-23
Standard Identifiers
• A word having special meaning but one that
a programmer may redefine
– In Figure 2.1, the standard identifiers printf and
scanf are names of operations defines in the
standard input/output library.
– Appendix B shows ANSI C standard libraries
•
•
•
•
P.800~801, stdio.h所列之functions
P.799, math.h所列之functions
P.802, string.h所列之functions (教到字串時請自學)
自行參考其功用,大略記一下
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-24
User-Define Identifiers
• Syntax rules
– An identifier must consist only of letters, digits, and
underscores
– An identifier cannot begin with a digit
– A C reserved word cannot be used as an identifier
– An identifier defined in a C standard library should not
be redefined
• 大小寫不一樣
– Rate, rate, RATE
– Wildly adopted in industry uses all uppercase letters in
the names of constant macros
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-25
Programs in memory
Figure 2.2 Memory(a) Before and (b) After Execution of a Program
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-26
Assignment Statement
Figure 2.3 Effect of kms = KMS_PER_MILE * miles;
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-27
Output operation: The printf function
Syntax Display for Function Call
• Syntax:
– printf(format string, print list);
– printf(format string);
• Examples:
– printf(“I am %d years old, and my gpa is %f\n”,
age, gpa);
– printf(“Enter the object mass in grams> ”);
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-28
Formatting Numbers in Program Output
• Field width
– the number of columns used to display a value
Displayed
Value Format Output
Value Format
Displayed
Output
234
%4d
▓234
-234 %4d
-234
234
%5d
▓▓234
-234 %5d
▓-234
234
%6d
▓▓▓234
-234 %6d
▓▓-234
234
%1d
234
-234 %2d
-234
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-29
Formatting Values of Type double
Value
Format
Displayed
Output
Value
Format
Displayed
Output
3.14159
%5.2f
▓3.14
3.14159
%4.2f
3.14
3.14159
%3.2f
3.14
3.14159
%5.1f
▓▓ 3.1
3.14159
%5.3f
3.142
3.14159
%8.5f
▓3.14159
.1234
%4.2f
0.12
-.006
%4.2f
-0.01
-.006
%8.3f
▓▓ -0.006
-.006
%8.5f
-0.00600
-.006
%.3f
-0.006
-3.14159
%.4f
-3.1416
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-30
Input operation: The scanf Functon
• scanf(“%lf”, &miles); (Figure 2.5)
• scanf(“%c%c%c”, &letter_1, &letter_2,
&letter_3); (Figure 2.6)
• &
– The C address-off operator
– Tell the scanf function where to find each
variable into which it is to store a new value
Beware the difference between SCANF and PRINTF in
input arguments
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-31
Figure 2.5
Effect of scanf("%lf", &miles);
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-32
Arithmetic
operators,
Appendix
C,
背優先權
Category
Operator
Associativity
Postfix
() [] -> . ++ --
Unary
+ - ! ~ ++ -- (type) * &
Multiplicative
* / %
Left to right
Additive
+ -
Left to right
Shift
<< >>
Left to right
Relational
< <= > >=
Left to right
Equality
== !=
Left to right
Bitwise AND
&
Left to right
Bitwise XOR
^
Left to right
Bitwise OR
|
Left to right
Logical AND
&&
Left to right
Logical OR
||
Left to right
Conditional
?:
Right to left
Assignment
= += -= *= /= %= >>= <<= &= ^= |=
Right to left
Comma
,
Left to right
1-33
Left to right
sizeof
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
Right to left
Type Conversion through Casts
• type cast
– converting an expression to a different type by writing
the desired type in parentheses in front of the
expression
– Table 2.9 (Page 63, 課本有錯)
Application
Avoiding integer
division
Example
Average = (double)total_score /
(double)num_students;
Rounding a number Rounded_x = (int)(x + 0.5)
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-34
Program-Controlled Input and Output Files
• declare a file pointer variable
– FILE *inp ,
*outp ;
/* pointer to input file */
/* pointer to output file */
• the calls to function fopen
– inp = fopen(“b:distance.dat”, “r” ) ;
– outp = fopen(“b:distance.out”, “w”) ;
• use of the functions
– fscanf(inp, “%lf”, &miles);
– fprintf(outp, “The distance in miles is %.2f. \n”, miles);
• end of use
– fclose(inp);
– fclose(outp);
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-35
Figure 2.14
Miles-to-Kilometers
Conversion
Program with
Named Files
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
1-36