
条件表达示语句
一、if语句
if(表达式) 语句1
如果表达式的值为非0,则执行语句1,否则跳过语句继续执行下面的语句。
如果语句1有多于一条语句要执行时, 必须使用{} 把这些语句包括在其中, 此时条件语句形式为:
if(表达式)
{
语句体1,2,3
}
例如:
if(x>=0) y=x
if(a||bc)
{
z=a+b
c+=z
}
if--else语句
除了可以指定在条件为真时执行某些语句外,还可以在条件为假时执行另外一段代码。在C语句中利用else语句来达到这个目的。
if(表达式) 语句1
else 语句2
同样,当语句1或语句2是多于一个语句时,需要用{}把语句括起来。 例如:
if(x>=0) y=x
else y=-x
if--else if--else结构
if(表达式1)
语句1
else if(表达式2)
语句2
else if(表达式3)
语句3
.
else
语句n
这种结构是从上到下逐个对条件进行判断,一旦发现条件满点足就执行与它有关的语句, 并跳过其它剩余阶梯若没有一个条件满足,则执行最后一个else 语句n。最后这个else常起着缺省条件的作用。同样,如果每一个条件中有多于一条语句要执行时,必须使用{}把这些语句包括在其中。
条件语句可以嵌套,这种情况经常碰到,但条件嵌套语句容易出错,其原因主要是不知道哪个if对应哪个else。
例如:
if(x>20||x<-10)
if(y<=100y>x)
printf(Good)
else
printf(Bad)
对于上述情况, Turbo C规定: else语句与最近的一个if语句匹配, 上例中的else与if(y<=100y>x)相匹配。为了使else与if(x>20||x<-10)相匹配, 必须用花括号。如下所示:
if(x>20||x<-10)
{
if(y<=100y>x)
printf(Good)
}
else
printf(Bad)
下面举几个例子:
输入一个数,如果大于0,输出plus如果是负数,输出negative如果正好是0,则输出zero。
main()
{
float num
scanf(%f,f)
if(num>0)
printf(plus\n)
else if(num<0)
printf(negative\n)
else
printf(zero\n)
}
先定义两个变量,然后输入一个数,然后判断这个数的范围,输出对应的字符串。
2.输入一个数x,输出y。其中y是x的绝对值。
main()
{
float x,y
scanf(%f,x)
if(x>=0) y=x
else y=-x
printf(%f\n,y)
}
Trubo C 2.0把一些常用的功能都写好了,我们只需要使用就可。例如求绝对值的功能在C的库里面就有。看下面的:
#include math.h
main()
{
float x,y
scanf(%f,x)
y=fabs(x)/*求x的绝对值,然后赋值给y*/
printf(%f\n,y)
}
这个程序和上面的程序完成的功能是一模一样的,都是求绝对值。可以看出,用下面这个方法比上面就要好一些。由
于fabs()是一个函数,系统自带的,所以在使用它的时候,我们必须把它所在的库文件math.h包含在程序中,即程序最前面一行。类似的还有求开方sqrt(),求指数幂exp()等等,这些与数学方面有关的函数都在math.h里面。
3.输入x,输出y,x和y满足关系:
x<-5 y=x
-5<=x<1 y=2*x+5
1<=x<4 y=x+6
x>=4 y=3*x-2
程序如下:
main()
{
float x,y
scanf(%f,x)
if(x<-5)
y=x
else if(-5<=xx<1)
y=2*x+5
else if(1<=xx<4)
y=x+6
else
y=3*x-2
printf(%f\n,y)
}
这里要说明两点:
(1).-5<=xx<1
不能写成-5<=x<11<=xx<4也不能写成1<=x<4在C语言中,不能认识连续不等式。
(2).y=2*x+5不能写成y=2x+5y=3*x-2也不能写成y=3x-2这与我们平时所写的方法不一样。
4.输入三个数x,y,z,然后按从大到小输出。
main()
{
float x,y,z
scanf(%f%f%f,x,y,z)if(x>=yx>=z) {
printf(%f\t,x)
if(y>=z) printf(%f\t%f\n,y,z)else printf(%f\t%f\n,z,y)}
else if(y>=xy>=z) {
printf(%f\t,y)
if(x>=z) printf(%f\t%f\n,x,z)else printf(%f\t%f\n,z,x)}
else
{
printf(%f\t,z)
if(x>=y) printf(%f\t%f\n,x,y)else printf(%f\t%f\n,y,x)}
}
说明:这是一个典型的if语句嵌套结构,如果不使用括号,那么if和else的对应关系就乱了。
switch--case语句
在编写程序时, 经常会碰到按不同情况分转的多路问题, 这时可用嵌套if -else-if语句来实现, 但if-else-if语句使用不方便, 并且容易出错。对这种情况, Turbo C提供了一个开关语句。
开关语句格式为:
switch(变量)
{
case 常量1:
语句1或空
case 常量2:
语句2或空
.
case 常量n:
语句n或空
default:
语句n+1或空
}
执行switch开关语句时,将变量逐个与case后的常量进行比较,若与其
中一个相等,则执行该常量下的语句,若不与任何一个常量相等,则执行default后面的语句。
注意:
switch中变量可以是数值,也可以是字符,但必须是整数。
2.可以省略一些case和default。
3.每个case或default后的语句可以是语句体,但不需要使用{}括起来。 例如:
main()
{
intx,y
scanf(%d,x)
witch(x)
{
case 1:
y=x+1
break/*退出开关语句,遇到break才退出*/
case 4:
y=2*x+1
break
default:
y=x--
break
printf(%d\n,y)
}
用开关语句编的程序一定可以用if语句做。那么在什么情况下需要用switch语句呢?一般在出现比较整的情况下或者能转化成比较整数的情况下使用。看下面的例子:
例子:一个学生的成绩分成五等,超过90分的为'A',80-89的为'B',70-79为'C',60-69为'D',60分以下为'E'。现在输入一个学生的成绩,输出他的等级。
(1).用if语句
main()
{
float num
char grade
scanf(%d,num)
if(num>=90) grade='A'
else if(num>=80num<89) grade='B'
else if(num>=70num<79) grade='C'
else if(num>=60num<69) grade='D'
else grade='E'
printf(%c,grade)
}
(2).用switch语句
main()
{
intnum
char grade
scanf(%d,num)
num/=10
switch(num)
{
case 10:
case 9:
grade='A'
break
case 8:
grade='B'
break
case 7:
grade='C'
break
case 6:
grade='D'
break
default:
grade='E'
break
}
printf(%c,grade)
}
说明一点,并不是每个case里面有都语句,有时侯里面是空的,就好象这一题。switch语句执行的顺序是从第一case判断,如果正确就往下执行,直到break;如果不正确,就执行下一个case。所以在这里,当成绩是100分时,执行case 10:然后往下执行,grade='A'break退出
最近给某OEM做了一次Automotive SPICE CL2评估,很多朋友就问我关于Automotive SPICE评估的一些事情。本文算是一个科普吧,给不太了解Automotive SPICE的人介绍一下Automotive SPICE和Automotive SPICE评估的事情。1. Automotive SPICE
1.1 什么是Automotive SPICE?
Automotive SPICE是一个”过程模型”,适用于”基于软件的车载系统”的”设计开发过程”。过程模型是一个集合,是包含了与设计开发过程相关的优秀实践的集合。既然是一个集合,那就需要按照一定的结构把这些实践组织起来:
方式一:按照实践所属的不同领域进行组织,比如有些实践是和项目管理相关的,有些实践是和软件需求相关的,有些实践是和软件单元测试相关的….,不同的领域被称为“过程”,这就是Automotive SPICE中的“过程纬度”。Automotive SPICE PAM V3.1中包括有32个过程。
方式二:按照做事情的方式进行组织,比如:依靠个人的经验来做,是能力度级别1(CL 1)的实践;按照可管理的方式(活动管理和工作产品管理)来做,是能力度级别2(CL 2)的实践;按照组织的要求来做,是能力度级别3(CL 3)的实践….,这就是Automotive SPICE中的”能力度纬度”。
“能力度”是“过程的能力度”。如果说“某个项目达到了能力度2级”,是不准确的,应该说“某个项目中的某些过程达到了能力度2级”。同样的,如果说某个组织达到了能力度2级,也是不准确的。
下图是常见的体现评估结果的形式,评估范围内的过程,分别达到了什么样的过程能力度。
1.2 怎么用Automotive SPICE?
Automotive SPICE是欧洲车厂在认识到软件质量的重要性之后,制定的一个规范。目的是希望其供应商能按照Automotive SPICE的要求进行产品的设计开发,以提供高质量的产品。
Automotive SPICE中包括有那么多的过程,那么OEM对供应商的具体要求是什么呢?要求供应商需要应用哪些过程,这些过程需要达到几级呢?
一般来说,OEM不会要求供应商去遵守Automotive SPICE的所有过程的,为什么呢?
性价比!
实施Automotive SPICE的成本,评估的成本,最后都是产品成本,OEM是需要买单的。
所以OEM会基于其对软件质量的理解,选择最重要的过程来要求其供应商。
起初的时候,不同的OEM有不同的使用Automotive SPICE的观点,形成气候的,如下图所示:
说明:
HIS是Audi AG, BMW, DaimlerChrysler, Porsche, Volkswagen成立的制定软件开发规则的组织
如上的过程划分,是基于Automotive SPICE PAM V2.4/V2.5
逐渐的,各OEM的要求开始统一,目前逐渐形成了如下两类:
说明:
2016年HIS组织解散了,VDA QMC(Automotive SPICE PAM V2.5及其以后版本的Owner)在2017年Automotive SPICE PAM V3.0发布时,将之前在业界应用非常广泛的HIS Scope,改名定义为VDA Scope
如上的过程划分,是基于Automotive SPICE PAM V3.0/V3.1
各个与汽车软件相关的供应商在应用Automotive SPICE时,往往最终都是为了满足OEM的要求,其应用Automotive SPICE的过程范围及目标级别,遵照其所服务的OEM的要求。
2. Automotive SPICE评估
接下来我们谈一谈Automotive SPICE评估,在谈Automotive SPICE评估之前,需要先谈一谈与Automotive SPICE相关的组织。
2.1 Automotive SPICE相关的组织
在Automotive SPICE领域,没有机构去管理“评估”,只是有机构去管理“评估师”。这个管理评估师的机构就是iNTACS(国际评估师认证机构,INTernational Assessor Certification Scheme)。iNTACS定义了评估师的级别划分,以及级别晋升和级别维持的条件。Automotive SPICE评估师的级别从低到高分别为:Provisional Assessor, Competent Assessor, Principal Assessor。
晋升到competent Assessor或Principal Assessor,或维持competent Assessor或Principal Assessor资质时,其条件之一就是需要实施Automotive SPICE评估:
作为Assessor晋升证据(或维持资质的证据)的评估要求包括:
评估由至少2个评估师来实施,评估组组长需要Competent Assessor或Principal Assessor,评估组组员可以是Provisional Assessor或Competent Assessor或Principal Assessor
评估的过程范围至少包括项目管理相关的过程、支持类相关的过程和工程类相关的过程
评估的时间需要至少50小时
2.2 Automotive SPICE评估的类型
在1次Automotive SPICE评估时,Automotive SPICE相当于评估的准则(Criteria),而还需要有评估方法,根据所选择的评估方法不同,Automotive SPICE评估分为两种类型,一种是项目能力度评估,一种是组织成熟度评估。
项目能力度评估
遵照ISO/IEC 15504-2 Performing an assessment实施的评估,是项目能力度评估。在这类评估中,是由Sponsor(发起评估的人)确定评估的模型范围(选择哪些过程,这些过程需要评估到几级)、项目范围(评估哪个项目),而Assessor是根据Sponsor的要求实施评估。
(企业想评价哪个项目,评价哪个过程,评价到几级,不是Assessor决定的!)
组织成熟度评估
ISO/IEC 15504-7 TR Assessment of organizational maturity定义的是组织成熟度评估的评估方法,在组织成熟度评估时:Sponsor确定被评估的组织,以及目标级别;由Assessor根据对被评估组织进行分析,之后进行项目抽样(使得被抽样的项目能代表整个组织的水平),然后通过对被抽样项目进行预定义过程的评估,进而得出组织的过程成熟度水平。
简单来说:在组织成熟度评估时,是由Assessor确定被评估的项目,而过程范围也是需要预定义的(应该由Automotive SPICE的Owner来定义,详细的原因,这里不再赘述,读者可以思考思考~~)
组织成熟度评估在业界很少被用到,主要的原因是OEM不太认可组织成熟度评估的方式。我分析有两个原因:
OEM更关注的是供应商为其开发的项目的情况如何,而不关注供应商的组织
Automotive SPICE的业界大咖们不希望Automotive SPICE因为组织成熟度的评估方式而商业化(Automotive SPICE还是很高冷的,不像CMMI那么商业化)
基于如上原因ISO/IEC 15504-7在2008年发布之后,至今也还是TR,始终不是一个正式的ISO标准,本文后续的描述,不再讨论组织成熟度评估。
注:此处的标准号都是15504,15504系列标准正在被330XX标准所替代。
2.3 被认可的Automotive SPICE评估
什么样的Automotive SPICE评估才是正式的评估,或者说是被认可的评估呢?
经常经常有人问我这个问题,但这个问题的题干是不完全的。
是被谁认可的评估呢?
举个例子:如果需要OEM A认可的评估,那么这个认可的条件就需要OEM A来定义。OEM A可以指定某个专业的软件过程专家(该专家可能不具备任何Automotive SPICE的Assessor资质),然后只要是该专家实施的评估,OEM A都认可。
所以说,这个问题不能问我,你应该去问那个“谁”
这么分析问题,有点杠精的行为了~~
正式的评估或者被认可的评估,在Automotive SPICE领域引申是指“可以做为Assessor资质维持或资质晋升的证据的评估”,那这样的评估需要满足什么条件呢?这个答案就是在前文(2.1节)中的阐述。
只要满足2.1节所阐述的条件的评估,就可以认为是一个正式的评估和受认可的评估。与实施评估的组织是无关的哦~~,对吗?
2.4 Automotive SPICE评估结果的有效性和有效期
Automotive SPICE评估是在某个时间点,对某个项目中已经实施的过程的能力度进行的评估,评估结果是代表了历史上的某个项目,在历史上的某个时间点的过程能力情况。
评估结果只是对被评估项目有效,对其它项目是无效的。
在VDA Guideline中,增加了12个月有效期的说法:在被评估项目中,如果没有发生变更,则可以认为评估结果在12个月之内是有效的(这个有效是对同一个被评估项目来说的);这里的变更是指过程的变更,包括:开发地点的变更、团队组织结构的调整、人员的更替、开发过程的调整等。
虽然某一次Automotive SPICE评估结果只是对被评估的项目有效,对其它的项目无效。但该次评估结果也往往还是可以在一定程度上反映其它项目的过程能力,特别是当其它项目与被评估项目在项目特征上一致时。
1)比如:某个OEM在考察供应商时,供应商展示了3个月之前实施的一次Automotive SPICE评估结果,则OEM可能会认为:“既然是在这么短的时间之前做的评估,那么该评估结果能代表企业目前的能力”(接受)。如果供应商展示了10年之前实施的一次Automotive SPICE评估结果,则OEM可能会认为:“这是太久之前的一次评估,很难代表企业现在的能力”(不接受)。3个月的时间可以接受,10年的时间不可以接受,那么中间的临界时间点在哪里呢?没有答案哦~~
2)不同的Automotive SPICE能力度级别也会对评估结果的有效性产生影响。
Automotive SPICE能力度二级时,具备相同项目特征的项目之间,其项目过程可以是不一致的;Automotive SPICE能力度三级时,具备相同项目特征的项目之间,其项目过程是一致的,都是遵照了标准的组织过程。基于此,企业的某个项目的某些过程如果达成了Automotive SPICE能力度三级,则客户可能会相信其它项目的过程能力也是如此的。
2.5 评估通过证书
当第三方机构在为某企业实施了Automotive SPICE评估之后,如果评估范围内的过程都达到了目标级别,则第三方机构会应被评估组织的要求,发一个通过Automotive SPICE评估的证书。
注:评估通过证书不是Automotive SPICE评估所要求的。是被评估组织为了其Marketing及Business目的,而要求评估机构颁发的。
Automotive SPICE评估通过证书是Automotive SPICE评估结果的Summary,虽然不同的第三方机构,颁发证书的格式和内容都不尽相同,但为了能客观全面的反映评估结果,一般需要包括如下信息:
被评估的组织及部门(是对某个部门下的项目进行的评估,项目所在的具体部门信息需要体现出来)
评估所遵照的Automotive SPICE模型信息,目标级别
评估方法
评估的项目名称,及评估的过程范围,评估日期
实施评估的组织
评估组组长信息及签名
.cir。Spice是一种功能强大的通用模拟电路仿真器,已经具有几十年的历史了,该程序主要用于集成电路的电路分析程序中,Spice的网表格式变成了通常模拟电路和晶体管级电路描述的标准,其第一版本于1972年完成,是用Fortran语言写成的,1975年推出正式实用化版本,1988年被定为美国国家工业标准,主要用于IC,模拟电路,数模混合电路,电源电路等电子系统的设计和仿真。由于Spice仿真程序采用完全开放的政策,用户可以按自己的需要进行修改,加之实用性好,迅速得到推广,已经被移植到多个 *** 作系统平台上。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)