1 / 29

程序设计基础

程序设计基础. 先修课程:计算机文化基础. 辅导教师 杜彪 email: dubiao66@hotmail.com 个人主页  http://www2.ratvu.com/dubiao/. 网上资源. 浙江电大 《 程序设计基础 》 课程资料 http://beta.zjtvu.edu.cn/bmwy/jsj/jxzy/chenxd/cxsjjc/index.htm 瑞安电大的网上学苑 http://www.ratvu.com/jwff/ / 浙江电大在线 http://open.zjtvu.edu.cn/

kedma
Download Presentation

程序设计基础

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 程序设计基础 先修课程:计算机文化基础 辅导教师 杜彪 email: dubiao66@hotmail.com 个人主页 http://www2.ratvu.com/dubiao/

  2. 网上资源 • 浙江电大《程序设计基础》课程资料 http://beta.zjtvu.edu.cn/bmwy/jsj/jxzy/chenxd/cxsjjc/index.htm • 瑞安电大的网上学苑 http://www.ratvu.com/jwff// • 浙江电大在线 http://open.zjtvu.edu.cn/ • 瑞安电大杜彪老师个人主页 –课程学习http://www2.ratvu.com/dubiao/

  3. 程序设计基础导学 • 在学习本课程之前,先讨论一个问题:编一个程序,输入10个整数,找出10个整数中最大的数并输出。 例如有 45 68 32 -12 87 25 56 42 98 76

  4. 程序设计方法之一:分而治之 • 在计算机内存中定义存放10个整数的空间和存放最大数的空间; • 输入10个整数; • 找出10个整数中最大的数,并保存; • 输出这个最大的数。 所谓分而治之,是将一个大问题分解成若干个容易解决的小问题并解决它。对于这个问题可编写程序如下:

  5. 问题一:如何存放10个数 • 根据冯.诺依曼结构,程序和数据是事先存放在内存中的,所以这10个数是事先放在内存中; • 这10个数的数据类型相同,都是整数; • 这10个数顺序存放,一个紧接一个。

  6. 数据结构—程序设计的前提 • 数据结构包括逻辑结构和物理结构 • 逻辑结构——数据之间在逻辑上的关系,包括线性结构(线性表,栈,队列)和非线性结构(树,图) • 物理结构——数据在计算机中的存储结构,包括数组和链表 • 后续知识: • 数组可表示线性表,栈,队列,二叉树;二维数组可表示图; • 链表可表示线性表,栈,队列,树,图; • 数组和链表在表示数据的逻辑结构时各有优缺点。

  7. A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] 数组—最常用的数据结构 • 数组是由若干个类型相同的元素组成;元素的类型决定数组的类型; • 每个数组有一个数组名; • 数组中元素在内存中是按顺序存放的,元素的顺序标号称为数组的下标; • C语言中数组的下标从0开始,最后一个元素的下标为n-1 (n是数组中元素的个数)。 例如,数组名为A,有10个元素,第一个元素为A[0];最后一个元素为A[9];

  8. 计算机语言—程序设计时人与计算机的交流工具计算机语言—程序设计时人与计算机的交流工具 • 所谓语言,是由一些符号根据一定的语法规则所组成的集合,人类的语言由句子组成,计算机语言由语句组成; • 计算机语言包括机器语言,汇编语言和高级语言三大类。机器语言由二进制的指令组成,可直接执行,但编写和阅读不方便;如果把机器指令和英文缩写一一对应,便形成汇编语言;于是,人们便发明了高级语言,用接近于英语和数学公式的方法来编写程序; • 高级语言不能直接执行,但可以将整个程序翻译成机器语言后再执行,这个翻译的过程称为编译;有些高级语言如BASIC可以逐条语句翻译并执行并为解释执行。

  9. 变量—程序中存放数据的基本单元 • 变量是一个命名的内存存储单元,在程序中可以修改内存变量的值。变量在使用前必须进行说明。如下面程序段计算表达式 2*(3+1) 和 表达式 3*(7-2)的结果: int r; r=2*(3+1); r=3*(7-2); • 其中语句: int r; 说明了一个整型的变量 r, 程序的第一次计算结果 8 存放在 r 中,后来 r 的值被改写成 15。: • 若要在键盘上输入r的值,使用语句: Scanf(%d,&r); 其中i表示输入的类型为整型。当运行到这条语句时,可从键盘上输入一个整数,程序会将这个整数的值保存到变量r指定的内存单元中。

  10. C语言中数组的定义方法 • 说明数组的一般形式为: type name[size]; 其中type是数组元素的类型,除不能是void类型和函数之外,它可以是任何类型,size是个整常数,用于说明数组name中最多可存放多少元素,方括号是个数组类型说明符。例如:说明包含有10个 整数类型元素的数组A,使用如下的变量说明语句: int A[10]; • int表示整数类型,是integer的缩写。

  11. 数组中元素的引用 • 数组中元素的引用,使用表达式: 数组名[表达式] 其中“表达式”是一个整型表达式,其值表示某个元素的序号,例如数组A的10个元素为: A[0] , A[1] ,A[2] ,A[3] ,A[4] ,A[5] , A[6] ,A[7] ,A[8] ,A[9] 例如要取得A[2]的值放在变量m中,可使用: m=A[2]; : 若要将A[3]的值改为-12,,可使用: A[3]=-12;

  12. 讨论:如何输入数组中的元素 • 这么做行不行? 输入元素A [0]; 输入元素A [1]; 输入元素A [2]; 输入元素A [3]; 输入元素A [4]; 输入元素A [5]; 输入元素A [6]; 输入元素A [7]; 输入元素A [8]; 输入元素A [9];

  13. 循环—解决语句重复书写 • i从0到9重复做 输入A [i]; • 用C语言表达为: for (i=0;i<10;i++) scanf(%d,& A [i]); C语言中的另一种表达: i=0; while (i<10) { scanf(%d,&A[i]); i++; } 这样的表达清楚吗?

  14. 开始 i←0 i从0到9 i<10吗? N 输入A [i] Y 输入A [i] i←i+1 结束 流程图—描述算法的工具 • 算法是解决问题的步骤,用文字难以表达,最好用流程图 N-S图 (盒图) 输入数组A中10元素的程序流程图

  15. 定义整型数组A [10] 和变量m i从0到9 输入A [i] 求出数组A中的最大值存变量m中 输出m的值 主程序算法描述 • 输入10整数并输出其中最大值的算法盒图

  16. 输入10个数求最大数的主程序 • 前面已介绍定义变量和数组,及访问和输入数组元素的方法。下面给出主程序,其中/*到*/之间为注解,为了便于理解程序,预编译时会自动删去。 #include <stdio.h> int max(int A [] , int n); void main() { /*定义整型变量m用来存放最大值,数型数组A存入输入数据*/ int m,A[10]; int i; /*i用来存放循环变量*/ /*输出提示信息,提示用户输入*/ printf(“请输入10个整数,用空格或回车间隔:”); /*输入10个整数*/ for (i=0;i<10;i++) scanf(%d,&A [i]); /*求得最大值,放在变量m 中*/ m=max(A,10); /*输出结果m的值*/ printf(“最大的数为%d”,m); }

  17. 函数—模块化程序设计的主体 • 在上面这个程序中包括一个main函数,在main函数中调用了三个函数:sacnf, printf和max; • scanf函数用来输入数据;printf函数用来输出数据;这两个已经在头文件stdio.h中声明,是系统预定义的函数,用户在#include指令中指出头文件后可直接使用; • max函数需要用户自已定义,使用这个函数时要告诉计算机函数名,数组名及数组元素的个数;

  18. max函数的设计方法 • C语言中函数定义的一般形式是: 返回值类型 函数名(参数表) 函数体 • 我们先不设计max函数的函数体,先设计函数头部;max函数返回值是数组中的最大值,其类型同数组元素的类型相同,为int ;函数名 为max; 参数表中的参数有二个,一个是整型数据A,另一个是A中的元素个数n,之所以有第二个参数是考虑到函数的通用性,因为有时候数组中元素的个数不一定是10个。函数max的头部形式为: int max(int A [ ] , int n) • 参数表中的每个参数和定义变量类拟,A后的一对方括号表示A是一个数组,但不要给出数组的元素个数。

  19. 算法—程序设计的灵魂 • 现在我们讨论一个关键是如何设计max函数? • 为设计这个函数,我们要先设计一个算法,在数组的n个元素中找出最大值; • 方法是让数组中的每个元素参加比较大小的比赛,比赛的方法有很多,方法的好坏影响算法的效率;因些算法是程序设计的灵魂; • 算法是在对问充分分析的基础上得出的,因些对问题的分析非常重要。

  20. 问题二:如何求数组中元素的最大值——max函数的算法分析问题二:如何求数组中元素的最大值——max函数的算法分析 • 求数组中最大值的比赛方法最好采用擂台赛,因为我们只需比出第一名;如何上擂台? • 方法是A [0]先上擂台,即假定A [0] 暂时最大,将A [0]保存到暂时最大者;然后让A [1]与A [0]比,若A [1] 比A [0]大,将A [1]存起来,作为暂时的最大者,否则不变;然后让A [2]上,与暂时最大者比,以些类推,直到数组中最后一个元素A [n-1]与暂时最大值比,若A [n-1]比暂时最大值大,则更新这个最大值,否则不变。 • 如何记录暂时最大值,一种方法是定义一个变量用来存放暂时最大值的数值;另一种方法是定义一个整型变量用来记录暂时最大值的下标,如果用变量K表示暂时最大值的下标,则K的初值为0,然后下标为1,2,3,…,n-1的元依次和A [k]比较,这样需定义一个循环变量i,从1到n-1,若A [i]> A [k],则K应更新为i。

  21. K=0 i从1 到n-1 A [i]> A [k] ? Y N K=i 返回A [k] max函数的算法设计 • 定义一个变量K表示暂时最大值的下标 ,K初值为0

  22. max函数的设计 int max(int A[],int n) { /*定义整型变量k用来存放暂时最大值下标,初定A[0]最大,所以K初值为0,i用作循环变量*/ int k=0,i; /*循环,i从1到n-1, A[i]与暂时最大者A[K]比较*/ for (i=1;i<n;i++) if (A[i]> A[k]) k=i; /* 若A[i]比A[k],更新暂时大者下标*/ /*返回最大值*/ return A[k]; } • 思考题:返回k行不行?

  23. 上机实验 • 将输入10个数求最大数的主程序和max函数内容合并,保存在一个文件中; • 使用VC6.0 或TC2.0来编译调试程序,建议使用VC6.0, 有关VC使用请参考实验课件 http://www2.ratvu.com/dubiao/cpp/cppsy.doc • 按要求输入10个整数,观察运行结果。 • 习题:计算 1+2+3+4+…+99+100,将结果显示。

  24. 实验注意事项 • C语言程序由函数组成,每一个C语言程序有且仅有一个惟一的main函数; • C语言是大小敏感的语言,大写和小写是有区别的; • 由于程序中一般都要用到printf函数来输出结果,所以必须在程序头部加上一行 #include <stdio.h> • 在VC中上机时,每一个实验结束后要关闭工作区。

  25. 小结 • 程序的基本结构有三种:顺序,分支和循环; • 程序设计的目的是处理信息,信息在计算机中的存放是数据存储;数据结构包括逻辑结构和存储结构;算法是程序设计的关键; • 算法的描述方法有:伪语言,流程图,盒图(N-S图)

  26. 小结和提高 • 程序=数据结构+算法 • 软件=程序+文档 • 程序容易出错,程序的正确性难以正确,程序不易读懂和修改; • 软件是产品,它的生产需要管理,需要用工程化的方法来生产软件;软件的生命周期包括计划阶段,开发阶段和维护阶段;具体包括:可行性研究,需求分析,总体设计,详细设计,编码,测试,运行和维护阶段;每一个阶段都需要文档。

  27. 本课程内容 • 第一篇:程序设计与程序设计语言概述 • 第一章导论:计算机文化基础,计算机模型 • 第二章:程序及程序设计,计算机语言概念;了解各种高级语言,常量,变量,表达式,语句,函数; • 第三章,第三章C语言程序设计——数据类型,运算符和表达式,语句,流程控制,函数,数组等。 • 第二篇:数据结构和算法 • 掌握线性结构——线性表,栈,队列的存储结构和常用操作;层次结构——树的概念,网状结构——图的概念;查找和排序; • 掌握算法的描述方法;算法设计中常用方法如穷举法,递归法,回溯法等;算法快慢的评价方法——时间复杂度。 • 第三篇:程序设计方法与原则 • 程序设计方法的发展:模块化,结构化,面向对象等; • 软件工程:用工程化的方法以来计划,开发和维护软件。

  28. 本课程学习方法 • 第一篇:程序设计与程序设计语言概述 • 第一章导论,第二章——自学为主,网上讨论 • 第三章,第三章C语言程序设计——实验学习;教师讲解实验,做实验题;完成实验报告; • 第二篇:数据结构和算法——听课,做习题,参加网上讨论,下载网上资料,复习 • 第三篇:程序设计方法与原则——听课,做习题,复习

  29. 本课程的建议学习步骤 • 自学第一章和第二章 • 认真学习本导学,组成学习小组,记录好联系电话 • 在家中的计算机上安装Visual C++6.0,掌握VC++集成开发环境的使用,将教材第四章的例程输入并编译,调试,运行 • 预习第三章,第四章,完成你会做的作业,将不懂的做好记号,上课注意听你不懂的部分,也可上网问老师和同学; • 听第三,第四章实验课,完成课后习题,并完成补做的实验题 • 预习第五章,第六章,上课,完成网上的练习题 • 将不会做的题目询问老师,参加网上讨论 • 自学第七章 • 做网上的模拟题,参加复习课,订正习题错误。

More Related