发布网友 发布时间:2023-05-02 15:31
共1个回答
热心网友 时间:2023-10-16 05:37
开源指的是原始码是开放的,可以获取的,至于程式语言,主要有指令码和编译两类,如果要深究,看编译器或直译器是不是可以免费获取,这些免费神器,通常也都有原始码.说程式语言开源,比较不妥,只要软体开源,就可以说开源,至于语言,最终也只是编译器或直译器,无所谓开不开源.
开源即开放原始码(Open source code)也称为原始码公开,指的是一种软体释出模式,讲原始码公开。闭源(Closed source)是作为开源的反义词而出现的一个术语,指被用于任何没有资格作为开源许可术语的程式。
1、开放原始码(英语:Open Source)描述了一种在产品的出品和开发中提供最终源材料的做法。一些人将开放原始码认为是一种哲学思想,另一些人则把它当成一种实用主义。在这个词广泛使用前,开发者和生产者使用很多词去描述这个概念;开放原始码在网际网路上获得广泛使用,参加者需要大量更新电脑原始码。开放原始码使得生产模组、通讯管道、互动社群获得改善。随后,一个新著作权、软体授权条款、域名和消费者提供建立的,一个新词开源软体诞生。
2、闭源。一般意味着将仅能获得它们许可的计算机程式的一个二进位制版本,而没有这个程式的原始码。软体的翻译修改从技术方面来说几乎是不可能的。这个发展模型的原始码被看作这个公司的商业秘密,因此可能获得原始码接入的团体例如学校,商业机构等必须提前签订不泄漏协议,以保证原始码不会大众所知而影响其盈利。
语法:这个是开关分支结构。基本用法如下
switch(option){
case option1:语句;break;
case option2:语句;break;
case option3:语句;break;
defult:语句;
````````````````
}
应用场景:
某些时候,在巢状使用if语句时,所有if语句看起来都非常相似,因为它们都在对一个完全相同的表示式进行求值,唯一的区别是每个if语句都将表示式的结果与一个不同的值进行比较。例如,考虑以下程式码块,它用一个if语句来检查day变数中的值,并判断它对应的是星期几:
if (day == 0)
dayName = "Sunday";
else if (day == 1)
dayName = "Monday";
else if (day == 2)
dayName = "Tuesday";
else if (day == 3)
...
else
dayName = "Unknown";
在这些情况下,通常可以将巢状if语句改写成一个switch语句,提高程式的执行效率,并增强可读性。
switch语句的语法如下(switch,case和default是C#关键字):
switch ( controllingExpression )
{
case constantExpression :
statements
break;
case constantExpression :
statements
break;
...
default :
statements
break;
}
controllingExpression(控制表示式)只求值一次。然后,程式逐个检查constantExpression(常量表达式),如果找到和controllingExpression的值相等的一个constantExpression,就执行由它标识的那个程式码块。我们将constantExpression称为case标签,一个case标签所标识的程式码块则称为case块。进入case块之后,程式将一直执行,直到遇到一个break语句为止。遇到break之后,switch语句就会结束,程式将从switch语句结束大括号之后的第一个语句继续执行。如果没有任何一个constantExpression的值等于controllingExpression的值,就执行由可选的default标签所标识的程式码块。
注意:每个constantExpression的值都必须是唯一的,使controllingExpression只能与它们当中的一个值匹配。如果controllingExpression的值和任何一个constantExpression的值都不匹配,也没有default标签,程式就从switch的结束大括号之后的第一个语句继续执行。
例如,前面的巢状if语句可以改写成以下switch语句:
switch (day)
{
case 0 :
dayName = "Sunday";
break;
case 1 :
dayName = "Monday";
break;
case 2 :
dayName = "Tuesday";
break;
...
default :
dayName = "Unknown";
break;
}
switch语句非常有用。但遗憾的是,你不能想用就用。使用时必须谨慎。任何switch语句都必须严格遵循以下规则。
● 只能将switch语句用于基本资料型别,例如int或string。对于其他任何型别(包括float和double型别),只能用if语句。
● case标签必须是常量表达式(constantExpression),如42或者"42"。如果需要在执行时计算case标签的值,则必须使用if语句。
● case标签必须具有唯一性;也就是说,不允许两个case标签具有相同的值。
● 可以连续写一系列case标签(中间不间插额外的语句),指定在多种情况下都执行相同的语句。如果像这样写,最后一个case标签之后的程式码将适用于所有case。然而,假如两个标签之间有额外的程式码,同时没有使用break跳出,就不能从第一个标签贯穿(也称直通)到第二个标签,编译器会报错。例如:
switch (trumps)
{
case Hearts :
case Diamonds : 允许贯穿—标签之间无额外程式码
color = "Red"; 针对Hearts和Diamonds这两种情况都会执行的程式码
break;
case Clubs :
color = "Black";
case Spades : 出错—标签之间有额外程式码,而且没有使用break来跳出
color = "Black";
break;
}
注意:break语句是用来阻止直通的最常见的方式,但也可以用一个return语句或者一个throw语句来替代它。
temp在程式语言中没有特别的含义,既不是关键字也不是库函式的函式名。
可能是程式设计人员自定义的一个变数名或函式名。
通常用来定义一个临时变数,是"临时"英文单词temporary的前4个字母。
举例如下:
int temp; 定义一个int型别的变数,变数名为temp
double temp; 定义一个double型别的变数,变数名为temp
int temp(int a, int b) 自定义一个函式,函式名为temp
{
return a+b;
}
表示不等于。
sibling 是同辈相邻节点,一般是同一个父节点的不同子节点。
ancestor 是父辈节点或者祖先节点
其实这得看具体的哪一种语言,不同的语言定义有些小不同。。。
考虑一棵树(资料结构里面的树),A节点有三个子节点B、C、D,对于C来说,sibling就是B和D,ancestor就是A。有些语言,如果A还有父节点的话,A的父节点也算是C的ancestor。