C语言程序设计计算机学院汤文兵Email:wbtang@aust.edu.cn高等教育出版社教学要求和学习方法学习方法具体做法教学要求•掌握程序设计语言的基本知识;•掌握程序设计的过程与技巧;•初步的程序设计能力•课堂学习•课外自学•重视上机实践•答疑讨论•模仿,改写,编写•通过不断的编程实践,领会和掌握程序设计的基本思想和方法。学习方法指导程序设计课程的教学内容包括“程序设计”和“语言知识”两部分,但必须将学习的重点放在程序设计上,千万不能“纸上谈兵”,过多地关注语言知识,特别是语法规则。这是因为本课程的教学目的主要是培养程序设计的能力,该课程的学习又具有其自身的特点,听不会,也看不会,只能练会。只有通过大量的编程练习,才能真正掌握语言知识,培养程序设计的能力,逐步理解和掌握程序设计的思想和方法,利用计算机解决实际问题。学好程序设计,贵在平时练习,应该做到功夫化在平时,努力多编程,编好程。平时练习包括基本训练和综合训练。Chap1引言一个C语言程序程序与程序设计语言C语言的发展历史与特点实现问题求解的过程讲授内容本章要点什么是程序?程序设计语言包含哪些功能?1程序设计语言在语法上包含哪些内容?2结构化程序设计有哪些基本的控制结构?3C语言有哪些特点?4C语言程序的基本框架如何?5形成一个可运行的C语言程序需要经过哪些步骤?6如何用流程图描述简单的算法?71.1一个C语言程序例1-1求阶乘问题。输入一个正整数n,输出n!。#includestdio.h/*编译预处理命令*/intmain(void)/*主函数*/{intn;/*变量定义*/intfactorial(intn);/*函数声明*/scanf(%d,&n);/*输入一个整数*/printf(“%d\n”,factorial(n));/*调用函数计算阶乘*/return0;}intfactorial(intn)/*定义计算n!的函数*/{inti,fact=1;for(i=1;i=n;i++)/*循环*/fact=fact*i;returnfact;}输入4输出24•C程序由函数组成•有且只有一个主函数main1.2程序与程序设计语言程序人们为解决某种问题用计算机可以识别的代码编排的一系列加工步骤。程序的执行过程实际上是对程序所表达的数据进行处理的过程。程序设计语言提供了一种表达数据与处理数据的功能要求程序员按照语言的规范编程1.2.1程序与指令指令:计算机的一个最基本的功能,如实现一次加法运算或实现一次大小的判别。计算机的指令系统:计算机所能实现的指令的集合。程序:一系列计算机指令的有序组合。1.2.1程序设计语言的功能1.数据表达:表达所要处理的数据,一般将数据抽象为若干类型。数据类型:对某些具有共同特点的数据集合的总称。代表的数据(数据类型的定义域)在这些数据上做些什么(即操作或称运算)例如:整数类型包含的数据:{…,-2,-1,0,1,2,…}作用在整数上的运算:+、-、*、/等1.2.2程序设计语言的功能2.流程控制:表达数据处理的流程,是通过程序中一系列语句来实现。结构化程序设计方法将复杂程序划分为若干个相互独立的模块;模块:一条语句(Statement)、一段程序或一个函数(子程序)等;单入口、单出口。3种基本控制结构任何程序都可以将模块通过3种基本的控制结构进行组合来实现。顺序结构循环结构分支结构自然顺序执行。根据不同的条件来选择所要执行的模块。重复执行某个模块。1.2.3程序设计语言的语法用程序设计语言所写的程序必须符合相应语言的语法。一般把用程序设计语言编写的未经编的程序称为源程序。它是一个字符序列,这些字符序列按顺序组成了一系列“单词”,“单词”的组合就形成了语言有意义的语法单位,一些简单语法单位的组合又形成了更复杂的语法单位,最后一系列语法单位组合成程序。(1)标识符:C语言的标识符规定由字母、数字以及下划线组成,且第一个字符必须是字母或下划线。(2)保留字(关键字):它们是C语言规定的、赋予它们以特定含义、有专门用途的标识符。(3)自定义标识符:包括在程序中定义的变量名、数据类型名、函数名以及符号常量名。有意义的英文单词(4)常量:常量是有数据类型的,如,123、12.34(5)运算符:代表对各种数据类型实际数据对象的运算。如,+、-、*、/、%、、=、==等(6)分隔符:如;、[、]、#、(、)等1.C语言的主要“单词”(1)表达式:运算符与运算对象组合就形成了表达式。如:2+3*4(2)变量定义:变量也有数据类型,所以在定义变量时要说明相应变量的类型。如:inti;(3)语句:语句是程序最基本的执行单位,程序的功能就是通过对一系列语句的执行来实现的。(4)函数定义与调用:函数是完成特定任务的独立模块,函数的使用最主要涉及到函数的定义与调用。(5)输入输出:C语言没有输入输出语句,用库函数printf()、scanf()等实现。2.C语言的主要语法单位表达式语句:表达式加分号“;”分支语句:实现分支控制过程if(ab)x=a;elsex=b;循环语句:实现循环控制的过程sum=0;/*初始化sum和i*/i=1;while(i=100){/*while循环语句*/sum=sum+i;i=i+1;}复合语句:用一对“{}”,将若干语句顺序组合在一起就形成了一个程序段。关于语句程序的编译程序计算机直接能理解的指令序列。编译器:对源程序进行词法分析、语法与语义分析,生成可执行的代码。直接指出程序中的语法错误。编程环境包括编辑程序(Edit)、编译(Compile)、调试等过程。掌握程序设计语言:根据语言的语法,用语言表达数据、实现程序的控制,并会使用编程环境。1.2.3程序设计语言的语法编译器C语言上机过程编译连接运行test.cpptest.obj源程序可执行代码test.exe1.3C语言的发展历史与特点历史1972年:贝尔实验室的DennisRitchie在B语言的基础上设计并实现了C语言。1978年:B.W.Kernighan和D.Ritchie(简称K&R)合著的《TheCProgrammingLanguage》是各种C语言版本的基础,称之为旧标准C语言。1983年:美国国家标准化协会(ANSI)制定了新的C语言标准,称ANSIC。1.3C语言的发展历史与特点C语言的特点1.C语言是一种结构化语言2.C语言语句简洁、紧凑,使用方便、灵活3.C语言程序易于移植4.C语言有强大的处理能力5.生成的目标代码质量高,运行效率高缺点:数据类型检查不严格,表达式出现二义性,不具备数据越界自动检查功能,运算符的优先级与结合性对初学者难于掌握。1.4实现问题求解的过程问题:求1~100间所有偶数的和。1.问题分析与算法设计求在一定范围内(1~100)、满足一定条件(偶数)的若干整数的和,求累加和。思路:设置一个变量(sum),其初值为0,然后在1~100的数中(i)寻找偶数,将它们一个一个累加到sum中。一步累加:sum=sum+i;重复累加,用循环语句实现,在循环过程中:(1)判别i是不是偶数:用分支控制语句来实现。(2)对循环次数进行控制:通过i值的变化1.4实现问题求解的过程2.编辑程序生成程序的源文件,C语言源文件的后缀为.c/.cpp#includestdio.hintmain(void){inti,sum=0;for(i=1;i=100;i++)if(i%2==0)sum=sum+i;printf(%d,sum);return0;}1.4实现问题求解的过程3.程序编译连接编辑程序后,用该语言的编译程序对其进行编译,以生成二进制代码表示的目标程序(.obj),与编程环境提供的库函数进行连接(Link)形成可执行的程序(.exe)。1.4实现问题求解的过程4.运行与调试经过编辑、编译、连接,生成执行文件后,就可以在编程环境或操作系统环境中运行该程序。如果程序运行所产生的结果不是你想要的结果,这是程序的语义错误(逻辑错误)。调试:在程序中查找错误并修改错误的过程。调试的方法:设置断点和单步跟踪。C语言程序的调试、运行步骤开始结果语法错误源程序.c/.cpp目标程序.obj可执行程序.exe编辑编译连接运行连接错误运行错误