已阅读5页,还剩75页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计,中山大学科学计算与计算机应用系,冯伟,2010-09-15,ProgramTutor,首先需要明确的问题?,我能学好C语言程序设计吗?,1、记忆力:牢记C语法规则及其使用方法。2、逻辑分析能力:习惯用C语言思考和表达解题详细步骤。3、上机时间和实践:加强加深理解,掌握并灵活运用C程序设计。,学习的建议,1、养成良好程序书写风格,包括:结构层次缩进风格、符号书写风格等。2、精通程序调试和排错的能力,包括:程序的编译、连接、单步跟踪、编译的环境等。3、经常读别人编好的好程序,好程序就像一本好书或是一件好的艺术品,在读别人程序的同时,你将能体会别人设计程序的用心和思想,久而久之,自已也能编出这些程序。,4、模仿别人编好的程序,从小到大,任何人都是从模仿开始,直到创造属于自已的作品。模仿是创新的基础。没有模仿,就没有真正的程序设计高手。模仿的目的是要把别人的程序彻底变成自已的,作为自已创造作品的基础。5、把对的程序变错,初学者最困惑的是程序出了错而不知道错在哪儿。把对的程序故意改错可以让你了解错误信息产生的真正原因。,学习的建议(续),学习的建议(续),6、做一个大作业,至少千行代码左右,学会几样非常重要的东西:模块化程序设计的好处、模块与模块之间信息传递的方法、怎样使程序从无到有直到变得很庞大。7、熟练记住一些常规算法,这点是不得不说的,这几个算法是不得不记住的:查找(顺序查找,折半查找)、排序(选择排序、插入排序、冒泡排序、合并排序、快速排序)。,其它的建议,1、反复读书,有的学生说,老师我读不懂书,真的读不懂呢,还是没有读呢?正确的读书是一遍不懂、读两遍,两遍不读、读三遍,.,还不懂?再读。自学和自我培养是大学之道。2、学习笔记与课本自注。好记性不如烂笔头,记下课堂和课下的学习要点和心得是极为重要和有效的学习方法。作为可能是学习唯一纪念的课本,充当笔记本可谓“C程秘籍”。3、万丈高楼平地起,大程序一定是由每一行代码构成的。注意写好每一行代码,多思考几个问题:这行代码作用是什么?这行代码放在这里行吗?这行代码不要行吗?改了会怎样?如何修改和调整才最好呢?尽可能精通每一行程序。4、万事开头难。只要开始编程了,程序就得完成。有了第1行代码、再想第2行代码、.、随着代码增加,你的程序将会变得越来越大,功能越来越强。必要程度的偏执狂。5、经验是在实践中增加的,不断的实践,记录下自已的经历,你拥有的知识和能力就会越多。实践出真知。,学习小组建议以宿舍为基础,以充分利用尽可能多的时间和机会组内相互讨论、互帮互学;建议组内推选学习程序设计有余力且愿意帮助组内同学学习者为组长,组内成员支持组长。每个小组都是以共同学好程序设计为目的,应有小组集体荣誉感,不能坐视或自认落后;组内、小组之间加强交流,通过座谈、网谈等研讨和上机实践,共同提高程序设计能力。请同学们以学习交流方便、有效为原则,考虑决定、自愿组合。不限于小组长和宿舍负责人,每个组员或宿舍成员都有义务和责任搞好自己的学习,并帮助其他同学的学习,互帮互学,共同提高,培养团队精神,树立集体荣誉感。,平时作业,1、课堂表现:不定期点名、提问和检查。2、课后作业和实验报告:每周自我复习、预习、多上机编程实践;作业本:书面作业5次、试验报告5次。3、学习总结:期中、期末2次电子版的个人学习小结,阶段性总结个人学习的优缺点。,课程成绩评定,总成绩100分平时作业成绩:20分期中考试成绩:20分期末考试成绩:60分,实验报告的格式,程序设计实验报告姓名:XXXX班级:XXXX学号:XXXX实验日期:xxxx年xx月xx日实验名称:认识C程序的VC+编译环境一、实验目的:要学习和掌握目标。二、实验内容:实验的题目。三、实验准备:实验前预先设计好的程序或方案。四、试验过程:实验中碰到的问题及解决和改进方案。(尤其找出错原因并改正和改良程序)五、实验总结:对实验过程中的心得体会进行总结。,本课程目的,1、掌握C语言的语法、语义、语用。2、掌握结构化程序设计的思想、方法。3、掌握小规模程序的设计、编写、调试。4、掌握程序设计中一些常规算法。,本课程内容概况,一、程序设计初步。二、基本数据类型与基本操作。三、结构化的流程设计。四、模块化的函数设计。五、复杂数据类型及其操作。六、程序开发与调试。,课程开讲!,(一)程序设计初步,1、C语言入门2、算法和程序概述,1C语言入门,1.1C语言的历史演化1.2C语言的特点1.3C语言的风格和结构1.4C语言程序的上机,1.1C语言的历史演化,1、C语言是国际上广泛流行的计算机高级语言,既可写系统软件,也可写应用软件。2、汇编语言到C语言自然演变:汇编语言依赖于计算机硬件,程序的可读性和可移植性都比较差;低级汇编语言对硬件的直接操作(如:内存地址和二进制位的操作),高级语言良好的可读性和可移植性,两者结合为C语言。3、开发Unix操作系统的历史契机:美国贝尔实验室的K.Thompson和D.M.Ritchie汇编语言B语言C语言。,C语言历史发展过程,1.2C语言的特点,1).语句简洁、紧凑,使用方便、灵活。2).运算符丰富。3).数据结构丰富。4).具有结构化控制语句和模块化函数。5).语法限制不太严格,程序设计自由度大。6).能直接对硬件进行地址和位操作。7).生成目标代码质量高,程序执行效率高。8).程序可移植性好。,C语言的可移植性好、硬件控制能力高,表达和运算能力强,因此许多大软件都用C编写。事实上,前述八个特点可以概括压缩为下述三大优势:1、具有结构化控制语句,适合结构化程序设计。2、提供丰富数据结构,适合复杂应用软件设计。3、允许直接访问地址进行位操作,适合系统软件设计。C优势是开发操作系统和系统应用程序以及其它对硬件进行操作的情况。,为什么要学习C语言语言功能强大,表达能力强。生成的目标程序效益高,可移植性好。既具有高级语言的优点,又有低级语言特色。语言又是面向对象程序设计的基础。应用面非常广泛。大家自身的需要。,几句题外话Fortran是科学计算的首选语言,建议自学掌握数值计算程序设计。Linux操作系统是将来的主流,建议自学掌握基于该系统的应用软件以及进行程序设计。Matlab、Mathematica、Maple数学计算好帮手。,1.3C语言的风格和结构,#include/*编译预处理命令*/voidmain()intmax(int,int);/*函数原型声明*/inta,b,c;/*变量声明*/scanf(“%d,%d”,一个简单的C程序,程序是由一行行符号序列表达的,空格将符号序列区分为:关键字:int、if、else、return等说明语句、数据性质;标识符:main、max、a、b、c、x、y、z等函数或变量等名字;运算符:”作为语句结束符。)用大括号“”和“”配对标识一个语句组。)书写格式自由,一行几句或一句几行都可以。)可以使用/*/对程序中任何部分做注释。,C语言的基本结构一个C程序由一个或多个函数组成,但是至少有一个称为main的函数,该函数是C语言直接执行的函数,其它函数通过调用等实现运行。)一个C程序由一到多个函数构成。)一个C程序中至少有且只能有一个main函数。)程序从main进入,从main退出。,C语言的书写风格C程序的书写风格虽不是C程序设计的内容,但是良好的书写风格可以保证程序结构层次清晰,充分体现结构化程序的特点,便于阅读、理解和排错。这对于想成为C程序设计高手的人而言,是必不可少的。)一般情况下,每个语句占一行。)行太长时分行书写,但是要使各行尽量有意义,运算符不要写在行首。)注意不同结构层次的不同缩进,而同一层次语句对齐。4)适当插入空格,以保证程序清晰,易读。,C语言的注释风格,1).注释的目的是程序容易读。2).每个函数定义之前一行作注释。3).只对重要的局部变量作注释。4).每个全局变量都作注释,说明该变量的作用及含义。5).对所用的复杂条件作注释,说明条件的含义。6).多余或错误的注释是有害的。,C语言源程序的建立和运行的基本过程静态检查目标程序可执行程序编辑编译连接执行结果源程序动态检查,有错,F.c,F.obj,F.exe,有错,有错,有错,1.4C语言程序的上机,C语言运行环境,1、TurboC/C+编译快,代码效率低,使用方便。2、BorlandC/C+要求内存较大,集成环境功能强大,调试方便,编译慢,但代码效率高。3、VisualC+功能较大,与Windows高度结合,程序调试方便。为目前主流C+编译器。,MicrosoftVisualStudio、Code:Blocks,VisualC+6.0集成环境使用,1、启动界面,ViewWorkspace,viewOutput,编译错误信息(Error、Warning),打开方法:ViewWorkspace或Alt+0是显示程序框架的地方,可从三种角度观察程序:ClassView类视图Resourses资源视图FileView文件视图,2、工作窗口,用户编辑程序、资源的全屏幕编辑器。在选择“工作窗口中的”项目时,会出现右图。,程序文件名,3、源代码编辑窗口,输出窗口,可关闭或打开:组合键:Alt+2菜单:viewOutput,4、输出窗口,输出窗口可以显示:编译错误信息(Error、Warning)调试变量状态文件查找结果等信息。,5、VC+菜单,(1)新建程序(FileNew)(2)输入或编辑程序(3)保存程序(FileSaveCtrl+S)(4)编译程序(BuildCompileCtrl+F7)(5)建立程序(BuildBuildF7)(6)运行程序(BuildExecuteCtrl+F5),6、程序上机过程,首先,在Windows资源管理器的F盘符下建立个人名字目录。而后,单击FileNew,在”新建项目”对话框中输入项目名。,(1)新建程序第一步,接上步,当按下“OK”按钮后。,(1)新建程序第二步,(1)新建程序第三步,接上步,按下“Finish”按钮,按下“OK”按钮。,(1)新建程序第四步,单击FileNew,在“新建文件”对话框中输入后缀为.c的文件名。,(1)新建程序简化步骤,首先,在Windows资源管理器的F盘符下建立个人名字目录以及子目录名。而后,单击FileNew,在“新建文件”对话框输入后缀为.c的文件名。,(2)编辑程序,接上步,按下“OK”按钮后,输入、编辑程序,方法一:按工具栏上“保存”或“保存所有”所有图标,方法二:按Ctrl+S,方法三:FileSave或FileSaveAll,(3)保存程序,接上步,保存程序,编译程序:Compile(Ctrl+F7)。无错时的“Output”窗口:,建立程序:Build(F7)。无错时的“Output”窗口:,执行程序:Execute(Ctrl+F5)。执行结果:,(4、5、6)编译、建立、运行程序(Build菜单),熟悉VC+运行环境和建立运行C程序的上机试验,1、上机学习使用VisualC+6.0系统环境:系统界面、菜单列表及相应功能。2、通过编辑输入简单C语言程序,建立、编译并运行这些例题程序,以掌握C语言程序的建立和运行过程。3、了解和区分C语言程序的基本组成和结构,认真领会程序的书写要求以写出层次清晰、结构分明的C程序。,2.1利用计算机解题的过程2.2算法的概念、特性和表示2.3计算机语言和计算机程序2.4结构化程序设计的思想和方法,2算法和程序概述,2.1利用计算机解题的过程,使用计算机解题必须按照计算机能够接受的方式进行工作。一般经过以下详细步骤:1)、明确需解决的问题和最后应达到的要求。2)、分析问题,构造模型。比如:建立数学模型。3)、选择和确定算法,画出流程示意图。4)、按流程示意图表示的算法步骤,编写高级语言程序。5)、编译和调试程序。反复试算修改,得到可用程序。6)、正式运行,得到正确的运算结果。7)、整理资料,写出程序说明书等技术报告。,(1)分析问题:确定问题的已知条件和未知条件,确定问题需要输入和输出什么等,这是工作的前提和基础。(2)算法设计:这是较难的一个步骤,一般一个问题的算法可以有多种,应该选择一个比较好算法的作为为主要实现算法,并画出流程图。(3)编写代码:选择合适的程序语言实现算法,这是最为简单的一步。(4)程序调试与运行:这一步主要是查找程序中有可能出现的错误,并通过运行观察程序的运行结果与预期的是否一样。(5)资料整理:把前面四步,每步解决的问题书写出来,以备将来查找,也有利于总结程序设计的经验。,经验:分析问题不全面,也不进行算法设计就开始编写代码,这样写出的程序一定会错漏百出,即便是最有经验的程序员也会出错,而且有些错误必将导致将来用更多的时间来改正,害人不浅,这非危言耸听!务必养成良好的解题编程习惯!,计算机解题简略步骤,复杂程序的开发软件工程,软件从其产生到消亡,经历定义(12)、开发(3456)和使用维护(78)三个阶段。所谓软件工程是指运用工程学的知识和方法指导软件的开发工作,以提高软件质量和软件成本。包括8个步骤:(1).软件开发计划确定系统分析员和用户(2).需求分析系统分析员和用户(3).总体设计高级程序员(主设计师)(4).详细设计程序员(5).编写高级语言程序程序员(6).软件测试有经验的高水平的程序员(7).交付使用有经验的高水平的程序员(8).软件维护有经验的高水平的程序员,软件开发的过程也可以分为下面6个阶段(1).软件计划可行性分析、工作范围和代价(2).需求分析(做什么)功能需求、性能需求、环境需求与限制(3).软件设计(怎么做)概要设计和详细设计(4).软件编码用具体语言实现设计(5).软件测试单元测试和综合测试(6).软件维护已交付的软件修改、扩充、排错,2.2算法的概念、特性和表示,1)、算法的概念算法是指为了解决一个问题而需进行的步骤,即一步一步的过程。它是对解题方法和步骤的描述。为了有效解题,不仅需要保证算法正确,还要考虑算法的质量,选择合适的算法。这里仅讨论计算机算法,即计算机能执行的算法。计算机算法分为数值算法和非数值算法。计算机在非数值运算方面的应用远远超过在数值运算方面。需要掌握一些典型的算法,编写相应的程序。,2)、典型算法举例,例1:两个杯子的水交换算法(交换算法本质),假定水分别放在A杯子和B杯子中,问题的解决可以这样:考虑借助第三只空杯子C。第一步:先把A杯子的水放入C杯子中;第二步:把B杯子的水放入A杯;第三步:把C杯子的水放入B杯。,例2:A、B、C三个作为上人由矮到高排列算法(冒泡算法本质),第一步:比较A、B座位上两人的高矮,如果A座位的人比B座位的人高,则A、B座位的人交换位置;(此时A座人矮B座人高)第二步:比较B、C座位上两人的高矮,如果B座位的人比C座位的人高,则B、C座位的人交换位置;(此时B座人矮C座人高且C座人最高)第三步:比较A、B座位上两人的高矮,如果A座位的人比B座位的人高,则A、B座位的人交换位置。(此时A座人矮B座人高且B座人次高),1.学生看书15分钟:课本P1518的2.2简单算法举例2.注意体会:用”顺序,选择,循环”的思想和方法设计算法,2)、算法的特性a.)有穷性:算法应包含合理执行时间内的有限操作步骤。b.)确定性:算法中每一个步骤应当唯一确定无二义。c.)有效性:算法中每一个步骤应当有效执行得到确定结果。d.)有零个或多个输入:算法的作用是处理必要的外界信息。e.)有一个或多个输出:算法的目的是为了求解。,3)、算法的表示方法(学生15分钟看书P20P34)a.)自然语言:优劣b.)传统流程图:优劣美国标准化协会(AmericanNationalStandardInstitute,ANSI)熟悉P20的图2-3的框图及其含义。明确传统流程图的弊端BS算法。明确改进传统流程图的思路和方法。c.)改进的流程图:1966年Bohra和Jacopini三种基本结构需要掌握三种基本结构、P25的框图2-14,15,17及其特点。d.)N-S流程图:1973年Nassi和Shneiderman结构化流程图需要掌握用N-S流程图2-24,25,2627表示算法。盒图(BoxDiagram)。e.)伪代码(PseudoCode):伪代码用基于自然语言和计算机语言之间的文字和符号描述算法。比较流程图表示算法的优劣。需要掌握用伪代码表示算法。f.)计算机语言:用计算机语言描述的算法叫程序用N-S流程图或伪代码描述算法后,只有用计算机语言编写程序描述算法,进而编译成目标程序被计算机识别和执行,才是实现算法。,三种基本结构的流程图,顺序结构选择结构当(While)型直到(Until)型循环结构,1.选择结构可以简单派生出单分支和多分支选择结构。2.顺序结构和选择结构是单向执行,而循环结构是环形重复执行。3.循环结构尤其注意和区别循环执行和退出条件(whiledo、dountil)。4.直到型循环至少执行一次,但当型循环可能一次都不执行。除此以外,当型循环和直到型循环是等价的。,三种基本结构的共同特点,基本结构具有的共同特点是:1)只有一个入口。2)只有一个出口。3)结构内每一部分都有机会被执行。4)结构内不存在无终止的死循环。基本结构可以派生或组合其它结构。由三种基本结构以及它们派生或组合的结构顺序组成的算法,组成结构化的算法,可以解决任何复杂的问题。,三种基本结构的N-S流程图,顺序结构选择结构当(While)型直到(Until)型循环结构,重点掌握、熟练运用:,问题?1.单分支选择和多分支选择的N-S流程图?2.循环结构具体的N-S流程图?,结构化算法的特点,1)由一些基本结构顺序组成。2)每个基本结构可以包含其它的基本结构。3)基本结构内不存在向前或向后的无规律跳转,流程的转移只存在于一个基本结构范围之内。4)若一个算法不能分解为若干个基本结构,则必然不是一个结构化算法。,N-S流程图表示算法实例,N-S流程图的优点,1)比文字描述直观形象,易于理解。2)比传统流程图紧凑易画,尤其废除流程线,整个算法结构由基本结构按顺序组成。3)上下顺序就是执行顺序,读写算法方便易行。4)表示的算法都是结构化算法,不可能出现流程无规律跳转,只能自上而下顺序执行。,关于伪代码和N-S流程图表示算法的说明伪代码不用图形符号,而是用文字和符号描述算法。这些文字和符号并没有严格的格式,事实上只要自己看懂、不至于出现逻辑错误就足够了。因此对于自己将算法写成程序是极为自由和方便的,易写、易读、易改。而N-S图要求有严格、统一的形式,必须用基本结构表示,结构化思路严谨。很大程度上是为了交流的方便,是给别人读的。但是因为用图形符号描述算法,对于复杂的算法,表示和修改使用不方便。所以,出于培养严谨性和交流方便,使用N-S流程图描述算法;而出于自己写程序的方便,建议使用伪代码描述算法。,2.3计算机语言和计算机程序,计算机语言是人与计算机交流的语言,联系的媒介,人们只有学习和掌握计算机语言才能控制计算机完成相应的功能。每一种计算机语言都规定了各自的语法规则和使用含义。计算机语言:语法(规则)、语义(涵义)、语用(应用)。为解决某一个特定的问题,而用某种语言编写的指令序列称为程序。,辨析:语言是全部指令的结合,而程序是为实现某一算法从某特定语言中选用所需的指令组成的指令序列。这个指令序列应该是时间有序的。这里,计算机语言与程序设计语言是等价的,计算机程序与程序是等价的。,计算机算法的组成1、运算操作:算术运算、逻辑运算、关系运算、函数运算、位运算、I/O操作等。2、控制结构:控制算法中各个操作的执行顺序。三种基本控制结构是:顺序结构(顺序执行)选择结构(比较判断)循环结构(反复执行),为写出一个程序,必须先设计算法。有了正确的算法(例如已经画出N-S流程图或写出伪代码程序)才能正确地编写程序。另一方面,程序的处理对象是数据,每个数据都有一定的特性,而且数据之间还有一定的联系。当处理对象比较复杂时,必须仔细分析数据以及它们之间的联系,即选择合适的数据结构。对于不同的数据结构,在程序中采用不同的处理方法。因此,程序不仅要描述算法(操作步骤),还应当描述数据结构(数据的类型和组织形式)。,著名计算机科学家沃思(Wirth)说:“程序就是在数据的特定的表示方式和结构的基础上,对抽象算法的具体描述。”算法数据结构程序算法数据结构程序设计方法语言工具和环境程序灵魂加工对象结构化和模块化工具成果,计算机语言分类1、机器语言:用二进制来编写计算机指令的语言,计算机直接认识。难学、难编、难记。2、汇编语言:符号语言用助记符表示计算机指令,命令与机器语言基本一一对应。机器语言和汇编语言都是面向机器的语言。优点:速度快,适于实时系统。缺点:严重依赖计算机硬件系统,可移植性差。3、高级语言:面向结构C、Fortran、面向对象C+和Java与人的自然语言很相近的语言。高级语言程序必须经过翻译系统处理后才能在操作系统下执行。,1、解释性高级语言:边解释边执行。这种语言编写的源程序,错误只能在执行过程中才能逐步发现。如Matlab语言。,高级语言按照翻译程序分类,数学和计算机中的等号数学符号“=”有两层含义,一是“赋值”;二是“相等”。计算机语言不能处理两义性或歧义性,只能处理确定性唯一性,所以,计算机语言符号中“=”是“赋值运算符”;“=”是“相等关系运算符”。,三种基本结构(顺序、选择、循环)组成的算法是结构化算法,而用高级语言编写的结构化算法就是结构化程序。这种程序便于编写、阅读、修改和维护,因此减少了程序出错的机会,提高了程序的可靠性,保证了程序的质量。结构化程序设计强调程序设计风格和程序结构的规范化,提倡清晰的结构。基本思路是:把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在为人容易理解和处理的范围内。结构化程序设计的本质:总体结构层次树状;局部组织模块化;一般不允许goto转向;数据和过程分开表示和存储。,2.4结构化程序设计的思想和方法,结构化程序设计的方法(1).自顶向下:有序性(2).逐步细化:由粗到细的层次性(3).模块化设计:按功能化分为模
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- TCECS 905-2021 管道燃气自闭阀应用技术规程
- 2025年北京焊工复审题库及答案
- 计算机视觉工程师面试题及答案
- 化妆品行业竞争力分析报告
- 货柜车司机校招面试题及答案
- 公务员面试逻辑面试题及答案
- 公务员面试刘斌面试题及答案
- 公务员面试兰州面试题及答案
- 杭州联合银行校招笔试题及答案
- 公务员面试酱面试题及答案
- 2025至2030国内抗氧化食品行业项目调研及市场前景预测评估报告
- 医疗警示教育培训课件
- 压力容器操作员安全培训资料
- 移民合作协议书
- 恋爱合同协议书 性关系
- 2025广西专业技术人员公需科目培训考试答案
- 掺氢天然气管道安全高效输送技术及现状研究
- 国有企业并购后财务整合案例研究
- Java程序设计说课
- 高中英语新课标3000词汇表(新高考)
- 宣传物料印刷合同范本3篇
评论
0/150
提交评论