您好,欢迎访问三七文档
计算机程序设计基础C语言武汉理工大学计算机科学与技术学院主讲教师:王舜燕博士教授关于本课程的教学安排本课程的教学目的:通过对C语言的学习,掌握使用计算机编程语言解决实际问题的基本理论、方法、技巧、以及常用的算法。本课程的教学安排:教学36学时,实验12学时。教材:《C编程方法学》王舜燕、李民等编著武汉理工大学出版社必读参考书:《写给大家看的C语言书》GregPerry著人民邮电出版社选读参考书:。《C语言详解》JeriR.Hanly等著人民邮电出版社《ABookonC:ProgramminginC》AlKelley,IraPohl机械工业出版社计算机等级考试二级C语言考试要求:1.熟悉VisualC++6.0集成开发环境。2.掌握结构化程序设计的方法,具有良好的程序设计风格。3.掌握程序设计中简单的数据结构和算法并能阅读简单的程序。4.在VisualC++6.0集成环境下,能够编写简单的C程序,并具有基本的纠错和调试程序的能力。课堂组织形式与考核6次上机实验:要求网上提交源程序,书面提交实验报告(含流程图和试算结果)。模块化程序设计实训:自定主题,分组完成一个模块化编程实例。*4次研讨式教学:由学生3至4人一组分组报告编程过程,调动学习热情。总评成绩100%=网上提交和书面提交上机实验作业20%模块化程序设计实训10%*课堂分组研讨10%期末闭卷考试60%。Let’sstartourClanguagejourney!2011年10月9日,C语言之父,著名计算机专家DennisRitchie病逝,享年70岁。在众多的国际互动论坛上,计算机爱好者们以特有的方式纪念这位编程语言的重要奠基人。许多网友的发帖中仅仅留下一个分号;在C语言中,分号标志着一行指令语句的结束。C语言由DennisM.Ritchie于1972年推出。虽然在C语言之后,C++、Java等各式各样计算机高级语言层出不穷,但不少程序员仍旧认为,C语言简洁、高效、灵活的特性令其具有独特魅力。引言为什么要学习C语言第1章C语言概述2013.6排名2012.6排名程序设计语言2013.6份额评级11C17.809%A22Java16.656%A34Objective-C10.356%A43C++8.819%A57PHP5.987%A65C#5.783%A76(Visual)Basic4.348%ATIOBE2013年6月编程语言排行榜WhylearnC?WhyisCstillpopular?It'subiquitous,closertothehardware,andusedtocreateotherlanguagesandoperatingsystems.IfyoulearnC,whatwillitdoforyou?KnowingCgetsyouclosertothehardware,tobetterunderstandhowthingsworkonthesystemlevel.WhyshouldcollegescontinuetoteachC?It'sanimportant,foundationallanguagethatrequiresyoutounderstandthefullstackofthetechnology.IfyoulearnC,you'llunderstandcomputersatamuchmoreprofoundlevelthanifyoudon't.Thetrickoflearningprogrammingispractice,practice,andpractice.Languageabstractionpyramid1stGeneration,MachineLanguage,0101010112ndG.AssemblyLanguageHumanLanguage3rdG.StructuredLanguages,C,Fortran4thG.OOPLanguages,C++,Java程序设计语言的发展历程和分层结构1.1程序和算法1.1.1程序与结构化程序设计方法程序(program)实际上就是为解决特定的问题,按既定算法编制的计算机指令集。程序是外表,算法才是灵魂。程序=数据结构+算法计算机必须通过明确的程序指令才能完成人们要它完成的工作,计算机无法完成人们想要它完成的没有明确指令的工作。Computersdowhatyoutellthem,notwhatyoumeanttotellthem.开发程序的一般步骤如下:确定要解决的问题。给出解决这个问题的算法。用某种程序设计语言表述这个算法并形成程序文件。对文件进行编译或解释以形成可执行指令。运行这个程序。测试或修正这个程序。在此,请注意,计算机只能识别并执行二进制机器指令的特点并被有改变。要想计算机执行汇编程序或者高级语言程序就必须将该程序“转换”(编译或解释)成机器指令程序,方可执行。结构化程序设计方法StructuredProgramming由荷兰的迪克斯特拉在1965年提出,是软件发展的一个重要的里程碑。结构化程序设计方法采用自顶向下、逐步求精的程序设计方法;将算法的描述归纳为3种基本结构的顺序组合,即顺序结构、选择结构、循环结构。使用3种基本结构描述的算法是结构化的算法,按照结构化算法编写出来的程序具有良好的可读性和可维护性。3种基本结构对照表传统流程图结构名称N-S流程图顺序结构选择结构直到型循环(后测试循环)当型循环(前测试循环)1.1.2算法的概念和特点算法(Algorithm)是指对解题方案准确而完整的一系列清晰指令。1个算法的优劣可以用空间复杂度与时间复杂度来衡量。Analgorithmisastepbystepprocessusedtocarryoutsomefunction.合理的算法具有以下特点(1)有穷性(Finiteness):1个算法不能是无限个步骤。(2)确定性(Definiteness):算法中每1个步骤的含义都是确定的、唯一的。(3)有输入(Input):1个算法可以有0个或多个输入。0个输入是指算法本身定出了初始条件。(4)有输出(Output):1个算法可有1个或多个输出。没有输出的算法是无效的算法。(5)有效性(Effectiveness):算法中的每1个步骤都应当能有效地执行,并得到确定的结果。不应存在逻辑上无法执行的语句,也称为死语句。算法做什么最出色科技作家克里斯托佛•斯坦纳(ChristopherSteiner)将算法描述为“庞大的决策树,由一个个连续的二元判定组成⋯⋯一组指令按序执行并获得一个理想的结果。信息经由一个已知算法的处理,产出需要的答案。”算法有五件事情尤其擅长:快速执行重复的任务、在不同选择之间做逻辑判断、分析预测、评估历史数据、发现被忽视的环节。所有这些都是人类最不擅长的。1.1.3算法的表示表示1个算法的方法很多,如自然语言法、传统流程图法、N-S流程图法、伪代码法等。例如,M=5!,求M的值。自然语言法描述算法如下:(1)设定变量M,M置初值为1,设定变量i,置初值为1。(2)如果i的值小于6,则执行(3),否则执行(4)。(3)将M乘以i并置于M中存放,将i中的值加1并置于i中存放,再执行(2)。(4)将M中的值输出。(5!=1×2×3×4×5=120)Algorithmsarealsoexpressedinpseudo-code.Therearenorealstandardsforexpressingalgorithmsinpseudo-code.用流程图表示算法美国国家标准化协会ANSI(AmericanNationalStandardInstitute)规定了一些常用的流程图符号:起止框判断框处理框输入/输出框注释框流向线连接点传统流程图描述N-S流程图描述传统流程图1→M1→ii6?M×i→Mi+1→i输出MN-S流程图M×i→Mi+1→i输出M结束1→M1→ii6?开始NY图形名称说明处理框表示确定的处理或步骤,又称矩形框判断框允许有1个入口,2个或2个以上的可选择的出口输入输出框表示数据的输入或经处理后结果的输出起始结束框表示算法的开始或结束连接点用于将不同的流程线连接起来功能调用框表示调用1个处理过程流程线表示算法中处理流程的走向注释框用于书写注释或说明信息传统流程图基本图形及其含义1.3第1个C程序#includestdio.h#includeconio.hintmain(void){printf(Everybody!Iamcoming!\n);getch();return0;}Everybody!Iamcoming!1.4预处理指令1.4.1使用#define预处理器是C语言的特色之一。预处理指令必须以#开始,有效范围从#开始的那行一直到文件结束,或者被另1个预处理指令所替代。C语言中常用的2个预处理指令:宏定义和文件包含。#define指令被称为宏(Macro)定义指令,根据是否有参数又分为无参数宏定义和有参数宏定义。无参宏定义的格式:#define标识符字符序列例如:#defineDAYS_PER_LEAPYEAR366有参宏定义的格式:#define标识符(参数表)字符序列例如:#defineSQUARE(x)((x)*(x))1.4.2使用#include除了头文件之外,预处理指令#include,也可以将其他文件的内容复制到#include所在位置。C语言中常用的头文件包括:输入输出函数stdio.h字符串函数string.h数学函数math.h动态内存分配函数malloc或stdlib.h字符函数ctype.h绘图函数graphics.h(1)在VC++6.0中建立1个新工程cylinder,选C/C++HeaderFile文件类型,建立头文件cylinder.h如下:#includestdio.h#definePI3.1416#defineAREA(r)PI*(r)*(r)#defineVOLUME(r,h)PI*(r)*(r)*(h)(2)选C++SourceFile文件类型,建立C源程序cylinder.c如下:#includecylinder.hmain(){printf(areais%f\n,AREA(1));printf(volumeis%f\n,VOLUME(1,2));getch();return0;}(3)运行程序cylinder.c,结果:实例:求出半径为1,高为2的圆柱体底面积和体积areais3.141600volumeis6.283200开始getch()暂停输出areais3.141600输出volumeis6.283200return0结束自测题:下面程序的输出是什么?#defineadd(a,b)a+bmain(){printf(%d\n,5*add(3,4));getch();}1.5标识符和关键字1.5.1关键字(Keywords)在C语言程序中,标识符和关键字都属于程序的基本语法单位。正确地使用标识符和关键字对于程序编制是至关重要的。关键字(Keywords)是C语言中明确的保留字,它们有特定的含义,不能用作其他用途。C关键字有32个:(VC++中呈蓝色)autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile1.5.2标识符(Identifiers)标识符由字母、数字、下划线组成,必须以字母或下划线开头,不要数字开头,不要是关键字,不能有空格。大写字母小写字母被认为是不同的字符,在标识符中不能含有其他字符,也不能跨行书写。Anidentifierisa
本文标题:第1章C语言概述.
链接地址:https://www.777doc.com/doc-2153944 .html