《西安交通大学》PPT课件.ppt_第1页
《西安交通大学》PPT课件.ppt_第2页
《西安交通大学》PPT课件.ppt_第3页
《西安交通大学》PPT课件.ppt_第4页
《西安交通大学》PPT课件.ppt_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

国家级精品课程网站 (本书配套教学网站) ,1,第8章 结构化设计方法,8.1 结构体类型 8.2 枚举类型 8.3 自顶向下,逐步求精的程序设计方法,2,8.1 结构体类型,构造类型数据 各元素是属于同一个类型的数组。 不同类型的数据组合成一个有机的整体,以便于引用。这些组合在一个整体中的数据是互相联系的。 例如,学生信息:学号、姓名、性别、各科成绩,地址等这些项都与某一学生相联系。如下图所示: 可以看到性别(sex)、年龄(age)、成绩(score)、地址(addr)是属于学号为10010和名为“Li Fun”的学生的。 如果将num、name、sex、age、score、addr分别定义为互相独立的简单变量,难以反映它们之间的内在联系。,3,职工工资单的层次结构,01 工资单 02 工作部门: 字符串, 最大长度为10个字符 02 姓名: 字符串, 最大长度为8个字符 02 职务(含职称、工种): 代码, 0-99 02 参加工作时间 03 年份: 1900-2050 03 月份: 1-12 03 日 : 1-31 02 家庭情况 03 婚否: 0-否, 1-是 03 是否双职工: 0-否, 1-是 03 独生子女出生日期 02 基本工资: 0-10000, 保留两位小数 02 岗位津贴: 0-10000, 保留两位小数 02 劳保福利: 0-1000, 保留两位小数 02 独生子女费: 0-10, 保留两位小数,02 房租: 0-10000, 保留两位小数 02 电费: 0-10000, 保留两位小数 02 水费: 0-10000, 保留两位小数 02 取暖费: 0-1000, 保留两位小数 02 保育费: 0-1000, 保留两位小数 02 实发工资: 0-10000, 保留两位小数,4,结构体类型的定义,结构体作为一种数据构造类型,在C+语言程序中也许需要经历定义声明调用的过程。 结构体是由不同的数据类型的数据组成的。组成结构体的每个数据成为该结构体的成员项简称成员。 在程序使用结构体时,首先要对结构体进行描述,这称为结构体的定义。,struct student char name20; unsigned long number; float math; float english; float physics; ;,struct 结构名 数据类型 成员名1; 数据类型 成员名2; 数据类型 成员名n; ;,5,结构体变量的声明,(1)先定义结构体类型,再定义结构体类型变量。 例如,日期类型可以定义为 struct Date int da_year; int da_mon; int da_day; ; Date yesterday, today, tomorrow; /说明了3个日期类型的变量: yesterday、today和tomorrow (2)定义类型的同时声明变量。例如, struct Date int da_year; int da_mon; int da_day; yesterday, today, tomorrow; (3)直接定义结构体类型变量,不出现结构体类型名。,6,8.2 枚举类型,如果某个数据项只可能取少数几种可能的值,则可以将该数据项定义为枚举类型数据。 enum ; 每个枚举元素实际上是一个以其所在位置顺序为值的常量(0, 1, 2, ),每个枚举元素取值为某一个整数值,所以它无法直接进行输入和输出 。 例: / 定义星期几类型 enum Weekday_type SUNDAY, / 星期日 MONDAY, / 星期一 TUESDAY, / 星期二 WEDNESDAY, / 星期三 THURSDAY, / 星期四 FRIDAY, / 星期五 SATURDAY / 星期六 ; enum Weekday_type workday; workday = MONDAY;,7,例 根据键盘输入的首字符选择对应颜色,难点: 每个枚举符号实际上是一个整数值,无法进行直接的输入和输出,要想获得变量的符号值,必须采用间接方法。 算法: 枚举类型颜色的符号值可以通过读入其前一个或两个字符来区分,可以先从键盘上读入两个字符,然后用选择结构将对应的值找出来并赋给变量,对该变量再一次使用选择结构打印输出正确的符号值。,/ Example :选择颜色 #include int main() enum Colors blue, brown, green, red, white, yellow choose; /定义枚举类型颜色并同时声明一个该类型的变量 char ch1, ch2; coutch1ch2; /输入两个字符 /判断键盘输入字符所对应的枚举类型值 switch(ch1) case b: if(ch2=l) choose=blue; else choose=brown; break; case g: choose=green; break; case r: choose=red; break; case w: choose=white; break; case y: choose=yellow; break; default: cout“Illegal input!“endl; ,/输出枚举类型值 switch(choose) case blue: cout“The color youve chosen is blue“endl; break; case brown: cout“The color youve chosen is brown“endl; break; case green: cout“The color youve chosen is green“endl; break; case red: cout“The color youve chosen is red“endl; break; case white: cout“The color youve chosen is white“endl; break; case yellow: cout“The color youve chosen is yellow“endl; return 0; ,10,8.3 自顶向下,逐步求精的程序设计方法,结构化程序设计支持“自顶向下, 逐步求精”的程序设计方法。 “自顶向下” 是将复杂、大的问题划分为小问题,找出问题的关键、重点所在,然后用精确的思维定性、定量地去描述问题。 “逐步求精” 是将现实世界的问题经抽象转化为逻辑空间或求解空间的问题。复杂问题经抽象化处理变为相对比较简单的问题。经若干步抽象(精化)处理,最后到求解域中只是比较简单的编程问题。,11,基 本 思 想 和 方 法,基本思想 从问题本身开始,经过逐步求精,将解决问题的步骤分解为由基本程序结构模块组成的结构化程序框图,据此编写程序。 基本方法 从题目本身开始, 找出解决问题的基本思路, 将其用结构化框图(可能是非常粗糙)表示。 对框图中的比较抽象的、用文字描述的模块进一步分析细化,结果仍用结构化框图表示。 将所求解问题的所有细节都弄清楚后, 再可以根据框图直接写出相应程序代码。,12,例 验证“哥德巴赫猜想”,“哥德巴赫猜想” 任何一个大于等于4的偶数均可以表示为两个素数之和。 使用流程图分析 在分析的过程中用结构化框图表示解题思路的优点是框图中的每个程序模块与其他程序模块之间的关系非常简明, 每次可以只集中精力分解其中的一个模块而几乎不影响整个程序的结构。,13,验证“哥德巴赫猜想”,求解第一步 提出问题: 验证哥德巴赫猜想,验证哥德巴赫猜想,14,验证哥德巴赫猜想(续1),第二步 设一上限数M,验证 从4到M的所有偶数是否能被 分解为两个素数之和。 定义一个变量X,初值为4。 每次令其加2,并验证X能否被分解为两个素数之和,直到X不小于M为止。,X = 4,X M,验证X是否能被分解 为两个素数之和,X = X +2,否,是,15,验证哥德巴赫猜想(续2),第三步 如何验证X是否能被分解为两个素数之和 1. 从P=2开始; 2. 判别X-P是否仍为素数: 3. 若是,打印该偶数的分解式。 4. 否则,换更

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论