第一讲:程序设计基础

Download Report

Transcript 第一讲:程序设计基础

第0讲:课程介绍
徐建良
[email protected]
信息学院南楼A319房间
办公电话:6678-1241
课程内容


第一部分(12课时)

复习C语言的主要内容

穿插C++语言的新特性

3个实验(6课时),2次作业
第二部分 (39课时)

C++的面向对象特性

8个实验(28课时),6次作业
每周四的34节,信息学院南楼A310上实验
交流平台

博客:www.cnblogs.com/furaibo

126信箱
[email protected]
 密码:object@2010

考试成绩构成




课堂出勤:5%,旷课一次扣2分,扣满为止
作业:10%
上机:20%,旷课一次扣3分,扣满为止
期末考试:65分
第一讲:程序设计基础
变量及控制结构
Development Environment
• Phases of C++ Programs:
1. Edit
2. Preprocess
Editor
Preprocessor
Compiler
3. Compile
Linker
4. Link
Loader
5. Load
Disk
6. Execute
Dis
k
Preprocessor program
processes the code.
Dis
k
Compiler creates
object code and stores
it on disk.
Dis
k
Dis
Primary k
Memory
Linker links the object
code with the libraries
Loader puts program
in memory.
..
..
..
Primary Memory
CPU
..
..
..
CPU takes each
instruction and
executes it, possibly
storing new data
values as the program
executes.
Visual C++
IDE (Integrated Development
Environment)
Visual Studio 2005
变量



变量名和数据类型
int x;
x
变量值
x = 6;
变量内存
0x123456EC
 大小
整数占4个字节

地址
&x
左值和右值
X=X+1
x
0x123456EC
6
7
6
指针变量
int *p;
p = &x;
p
x
0x12345678
0x123456EC
*p
8
7
0x123456EC
*q
指针变量特有的*运算
y = *p;
int *q; q = p;
int z = *q
q = &z
q
*p = 8;
z
0x12300000
0x123456EC
0x12300000
0x87654321
8
*q
Visual C++集成开发环境

创建Project



Src Files
Header Files
每个Project只能有一个main函数
C++的输入输出

C语言
#include <stdio.h>
scanf(“%d”, &n);
printf(“You entered %d\n”, n);

C++输入输出流对象
#include <iostream>
using std::cout; //
using std::cin;
//
using std::endl; //
cin >> n;
cout << “You entered
输出
输入
换行
” << n << endl;
控制结构(control structure)

选择语句

嵌套的if-else语句

else摇摆问题(dangling-else problem)
如果 x 和 y 都大于5,输出“x and y are > 5”,否则输出“x is <= 5”
x=6, y=7; x=6, y=4
==运算符和=运算符

表达式均可作为if语句的条件。零: false,非零: true

由于赋值语句产生值,它作为if语句的条件也不会出现编
译错误。

单独的判断语句也不会出现编译错误
搜索程序中所有的 “=”,并检查出现“=”
的每个位置是否正确使用了赋值运算符
练习

输入三角形的三条边的长度a,b,c。判断该三角形
是不是直角三角形。
上机题


编写一个程序,它能够根据某个人的生日(month,
day),求出其所属的星座。
输入三角形的三条边的长度a,b,c。判断该三角形
是等腰三角形、等边三角形还是一般三角形。
实验1
计算器控制的循环

对某城市一周的气温进行了记录。请根据记录表,计
算并打印这一周的平均气温。
the source
计数器控制的循环




命名一个控制变量
设置控制变量的初值
定义一个循环继续条件,用于对控制变量终值的测试
增值(或减值),在每次循环过程中修改控制变量的值
条件为真时
控制变量的终值
控制
变量名
控制变
量初值
循环继
续条件
控制变
量增值
for and while
根据用户的输入确定循环次数

求
间的数字,n 是位数。
的值。其中 a 是1~9之
Repdigiti = Repdigiti-1 * 10 + a;
Sentinel-Controlled Repetition

开发一个求平均气温的程序,该程序可以在每次运行时处理任
意个数的气温值。
 需要一个标记,它不可能出现在气温中,比如 -200,
用来表示输入的结束。
 在累加的同时,还要记住已经录入了多少个气温。
Sentinel-Controlled Repetition
the source
Nested Control Statements

某所大学开设了一门课程,目的是为那些准备考会计证书
的学生进行培训。去年,完成该培训的学生中有10人参加
了认证考试。于是,该所大学想知道学生在这次考试中的
表现如何。要求编写一个程序,总结此次考试的结果。1
表示通过了考试,2表示没通过。

输入每个考试结果(1或是2)。显示提示信息“Enter result”

计算两类结果各自的数目

输出考试结果的总结,内容包括通过考试和未通过考试的人数

如果有8个以上的学生通过考试,那么输出信息“Raise tuition”
考试结果
两类结果各自的数目
break and continue statements

break语句



在while, for, do … while 和 switch语句中执行时, 立刻使程序
控制退出这些语句,而继续执行这些语句之后的第一条语句
提高程序运算效率
continue语句

在while, for, do … while 语句中执行时,使程序跳过循环体内
剩下的语句,继续进行循环体的下一次迭代
1 2 3 4 6 7 8 9 10
Using continue to skip printing 5
break语句的应用--判断素数
双重循环—小九九表
C++程序的数据
Linux可执行程序结构


代码区(text segment)

存放CPU执行的机器指令(machine instructions)

代码区是只读的

规划了局部变量的相关信息
全局初始化数据区/静态数据区(initialized data segment)


包含了程序中

已初始化的全局变量、已初始化的静态变量(全局、局部)

常量数据(如字符串常量)
未初始化数据区。亦称BSS区(Block Started by Symbol)

全局未初始化变量和未初始化静态变量。在程序开始执行之前被内
核初始化为0或者空指针(NULL)

long sum[1000]
Linux进程结构

如果将某个可执行文件加载到内存运行,则将成为一
个进程
栈区
堆区
BSS区
未初始化全局变量
(用零初始化)
数据区
已初始化全局变量
静态变量和常量数据
代码区
可执行代码
可执行文件结构
未初始化全局变量
(用零初始化)
BSS区
已初始化全局变量
数据区
静态变量和常量数据
可执行代码
代码区