欢迎来到天天文库
浏览记录
ID:52192907
大小:154.50 KB
页数:66页
时间:2020-04-02
《北大裘宗燕《从问题到程序》第三章 变量、函数和控制结构.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、从问题到程序裘宗燕北京大学数学学院2005年第三章变量、函数和控制结构已讨论机制的局限性:只能描述由基本数据出发的简单计算;只能描述特定计算。我们希望:描述更为复杂的计算过程使程序有一定通用性,能解决一类问题,完成对不同数据的类似计算因此需要有更多的程序机制。3.1语句和复合结构语法:语句的形式必须符合语言要求。语义:形式合法的语句表达了某种含义(程序执行时的效果),称为语句的语义。语句是程序的基本单位。函数调用是一种“基本”语句。还有其他一些基本语句(下面要介绍)。为描述复杂的计算,语言提供一些组合简单语句的结构,实现对执行过程的控制。复合结构(复合语句
2、)语法:一对花括号,其中可有0个或多个语句。语义:顺序执行其中的各个语句。空复合结构中没有语句,执行时立即结束。{}前面简单C程序的主要部分是个复合语句:intmain(){printf("Goodmorning!");return0;}3.2变量的概念、定义和使用在硬件里,数据存储概念是内存单元和地址,变量是它们在高级语言里的反映。变量:存储数据的命名对象。通过变量名可以使用存于变量中的数据。变量名是标识符。基本操作:赋值,取值。变量能保存值。给某变量赋一个值之后,每次使用它总得到这个值,直到下次赋值。在程序执行过程中,一个变量的值可以变化。变量有固定
3、的类型,只能保存这个类型的值。整型变量(保存int值的变量),双精度变量(保存double值),字符变量等。变量定义:变量必须先定义后使用定义所需信息:变量名和类型。例子:intm;doublex;可以同时定义多个同类型的变量:intk,n,sum,count;longdoubley,z;关键字不能用做变量名提倡采用有意义名字复合结构中可以定义局部变量。在内部使用变量定义应出现在所有语句之前{变量定义序列 语句序列}一个复合结构里不能定义多个同名的变量。复合结构的执行(修正的语义):先定义变量,而后顺序执行各语句。变量的取值与赋值取值:计算中遇到变量,取其
4、值参与计算:x+sin(3.2*y)-pow(x,2)表达式里有变量,计算结果将依赖于变量值。printf(“%d”,n*2);赋值:用赋值运算符(=,赋值号)表示:x=5.0左边是赋值目标,右边是提供值的表达式赋值运算的主要效果是把表达式的值赋给左边变量赋值运算符优先级很低。例:x=2+3*y赋值语句:赋值表达式后加分号(语法)是最基本的语句,完成程序里最重要的操作程序中一般用赋值语句描述赋值动作赋值表达式也可独立存在(后面讨论)例:重写由三边3、5、7求三角形面积的程序。计算中多次用半周长,定义变量保存这个值,可避免重复计算。#include5、io.h>#includeintmain(){doubles;s=(3.+5.+7.)/2.;printf("Area:%f",sqrt(s*(s-3.)*(s-5.)*(s-7.)));return0;}变量的最主要用途:保存计算的中间结果赋值运算符的值与结合性赋值运算也有值,就是右边表达式的值。赋值表达式的值通常不用。赋值表达式的值可以用。例(不提倡):y=(x=5)+8;人们有时用同一表达式为多个变量赋值。y=(z=(x=1.0));赋值运算符从右向左结合。上面语句可以简化(也称多重赋值):y=z=x=1.0;赋值与类型被赋值变量有6、类型(由变量定义确定);赋值号右边表达式的值有类型。规定:若表达式值与被赋值变量类型不同,该值先转换到变量类型的值,然后赋值。在前面程序例子里把赋值语句改写成:s=(3+5+7)/2;运行时发现程序的结果不对,为什么?请考虑:运算在哪个类型里进行变量初始化定义时指定初始值。可用数值或者数值表达式为类型合适的变量做初始化:doubles=(3+5+7)/2.0;longdoublex=4.5L,y=3.24L;初始化只能一次对一个变量做。赋值表达式有值,下面是合法语句:x=2.0;y=(x=3.0)+x;执行后y的值是什么?赋值与数学中的“等于”完全不同。例:7、x=x+1;“x=x+1”在数学里为矛盾。上语句则合法(常用)。这个问题没有回答,因为第二个语句不正确。C语言未规定加法对两个运算对象的求值顺序,“这种表达式的结果没有定义”。程序中的注释注释:为帮助人阅读/理解程序而写在程序里,起注解作用的说明性文字。注释对程序意义(执行)没有影响。(各种语言都允许写注释)形式:/*任何字符的序列*/程序里的注释相当于一个空格。程序中加入必要注释是一种好的编程习惯。对于复杂的大程序,注释的意义更大。简单计算程序#include/*如用数学函数,要写#include*/intmain(){/8、*若干变量定义(及可能的初始化)*//*若干计算和赋
5、io.h>#includeintmain(){doubles;s=(3.+5.+7.)/2.;printf("Area:%f",sqrt(s*(s-3.)*(s-5.)*(s-7.)));return0;}变量的最主要用途:保存计算的中间结果赋值运算符的值与结合性赋值运算也有值,就是右边表达式的值。赋值表达式的值通常不用。赋值表达式的值可以用。例(不提倡):y=(x=5)+8;人们有时用同一表达式为多个变量赋值。y=(z=(x=1.0));赋值运算符从右向左结合。上面语句可以简化(也称多重赋值):y=z=x=1.0;赋值与类型被赋值变量有
6、类型(由变量定义确定);赋值号右边表达式的值有类型。规定:若表达式值与被赋值变量类型不同,该值先转换到变量类型的值,然后赋值。在前面程序例子里把赋值语句改写成:s=(3+5+7)/2;运行时发现程序的结果不对,为什么?请考虑:运算在哪个类型里进行变量初始化定义时指定初始值。可用数值或者数值表达式为类型合适的变量做初始化:doubles=(3+5+7)/2.0;longdoublex=4.5L,y=3.24L;初始化只能一次对一个变量做。赋值表达式有值,下面是合法语句:x=2.0;y=(x=3.0)+x;执行后y的值是什么?赋值与数学中的“等于”完全不同。例:
7、x=x+1;“x=x+1”在数学里为矛盾。上语句则合法(常用)。这个问题没有回答,因为第二个语句不正确。C语言未规定加法对两个运算对象的求值顺序,“这种表达式的结果没有定义”。程序中的注释注释:为帮助人阅读/理解程序而写在程序里,起注解作用的说明性文字。注释对程序意义(执行)没有影响。(各种语言都允许写注释)形式:/*任何字符的序列*/程序里的注释相当于一个空格。程序中加入必要注释是一种好的编程习惯。对于复杂的大程序,注释的意义更大。简单计算程序#include/*如用数学函数,要写#include*/intmain(){/
8、*若干变量定义(及可能的初始化)*//*若干计算和赋
此文档下载收益归作者所有