注释符:
“不写注释是流氓,瞎写注释是扯淡。”注释是写给自己看的,当我们写完代码后,再看自己所写的代码时,注释可以帮助我们更快地想起并理解自己所写的代码的含义。注释符一共有三种:1. //
用法:用于单行注释,要注释的内容写在“//”后。
用法:用于多行注释,以“/*”开始,后面为想要注释的段落,以“*/”结束。即:/*注释内容*/
用法:用于给文档注释。注释可以出现在文档的序言中,包括文档类型定义、文档
之后或文本内容中。以“<!--”开始,后面为想要注释的段落,以“-->”结束。即:<!--注释内容-->
标识符:
基本规则:以“_”或者 英文字母 开头,后面的可以使用“_”、数字 或者 英文字母;
命名与关键词不同。
Hungarian命名规则:在满足基本规则后,前缀代码的实际数据类型。如:strName,iHour,fSalary
Camel命名规则:在满足基本规则后,各单词首字母大写,其余字母小写。如:FirstName,HourRate
基本类型:
简单的数据类型包括数值、字符 和 布尔类型
Type Min Max
sbyte 8位带符号整型 -128 127
byte8位无符号整型 0 255
short16位带符号整型 -32768 32767
ushort16位无符号整型 0 65535
int32位带符号整型 -2147483648 2147483647
uint 32位无符号整型 0 4294967295
long64位带符号整型 -9223372036854775808 9223372036854775807
ulong64位无符号整型 0 18446744073709551615
float单精度浮点 -3.402823E+38 3.402823E+38
double双精度浮点 -1.79769313486232E+308 1.79769313486232E+308
decimal金钱类型 -79228162514264337593543950335 79228162514264337593543950335
char:字符类型
string:字符串类型
bool:用于判断对错
例如:using System; // w2lb.cs
public class TypeSize
{
public static void Main()
{
bool vbool = true;
char vchar = '1';
string vstring = '1';
int vint = 1;
double vdouble = 1;
float vfloat = 1;
}
常量:
const关键字:用于对不修改字段和局部变量的声明,不能进行修改 且 必须在声明行进行
赋值。
格式:const 变量类型 变量名=值
例如:const int mouths=12,weeks = 52, days = 365;
注:符号常量(名称和值):在C#中预先确定为公共常量。
例如:Math.E (2.71828182845905)
Math.PI (3.14159265358979323846)
变量:
变量是在程序执行期间可以根据需要改变的值,以保存数据和计算结果;
内存中可以储存值的位置,每个变量都有一个类型,该类型决定要储存在变量中的值。
例如:string name=”Jack”;
int number=1;
double number=1;
类型转换:
将一种数据类型转换成另外一种数据类型,有显式类型转换 和 隐式类型转换。
1.强制类型转换(显式类型转换):
四种方法:1.Convert类型转换:
方法:string s=”123”;
int n = Convert.ToInt32(s);
方法:double d=303.6;
int n=int(d);//303.6 -> 303
int number = int.Parse(“123”); //将字符串转化成整数类型
函数中的错误类型而终止。
用法:数据类型.TryParse(“string类型的内容”,out转换成的目标名)
例如:int number=0;
bool b=int.TryParse(“123”,out number);
方法:例子说明:int number=100;
double a=number;
运算符:
注:“+”有两种作用:第一种:如果加号两边都是数值时,加号起相加的作用。
第二种:只要加号两边中的一边是字符(串),加号起连接作用。
关系表达式:用关系运算符连接的表达式。
bool类型:在C#中,我们用bool类型描述对或错。
bool类型的值只有两个:true 和 false
&&:两个都对输出true,否则输出false
语法:表达式1 &&表达式2
||:有一个对就输出true,都不对则输出false
语法:表达式1 || 表达式2
!:对输出false,错输出true
语法:!表达式
逻辑运算符一般是关系表达式或者bool类型的值。
逻辑表达式的结果是bool类型。
运算符优先级:先乘除,后加减;
有括号先算括号里面的;
先运算,再比较。
例子:12 + 8 * 6 = 12 + 48 = 60
13 * 10 > 12 * 11 = 130 > 131 = false
作用:把等号右边的值赋值给等号左边的变量。
注:等号两边的变量类型要保持一致。
例如:int a=10;
string b=”我爱学编程。”;
赋值语句(赋值表达式):由等号链接的表达式。
每个表达式我们都可以解出一个定值,对于赋值表达式而言,等号左边的变量的值就是整个赋值表达式的值。
例如:n=13;
n+=12; //值为n+12
表达式:
由操作数(常数、变量、函数等)和 运算符(+、-、>、<等)组成的式子。
例如:6+8*9+6;
4*x;
x+y;
x++;
x>y;
字符串表达式:
+: 将两个字符串连接到一起;
==:检查两个字符串相等;
!=:检查两个字符串不等;
(Compare to):比较两个字符串,参数(string1 string2)
如果string1在string2后,则得到的值小于零;
如果string1和string2在同一位置,则得到的值等于零;
如果string1在string2前,则得到的值大于零。
Examples Results
'Deakin' + ' ' + 'University' 'Deakin University'
'Deakin' == 'deakin' false
'Deakin' != 'deakin' true
'Melbourne'.CompareTo('Geelong') positive Integer
'Geelong'.CompareTo('Melbourne') negative Integer
'Geelong'.CompareTo('Geelong') 0
Week3总结:输入和输出
输入:
用户在()中输入内容.
输出:
Console.WriteLine();:用于输出用户输入的信息,打印结束后,光标将会停在打印内容的下一行。
Console.Write();:用于输出用户输入的信息,打印结束后,光标将会停在打印内容的同一行的后面。
收集数据:
Console.ReadLine();:停止程序执行并收集用户输入的所有输入内容,读取整个字符串,只有按下Enter键(回车)后继续执行。
Console.Read();:停止程序执行并收集用户输入的内容,只能取一个字符,按下任意键后继续执行。
数据转换:
当数据由标准输入返回后,我们可以进行转换成过程需要的变量类型。
转换字符串类型的三种方法:1.Convert类型转换
(以上三种方法和之前类型转换的方法一致)
例如:Console.WriteLine();
string b=Console.ReadLine();
int a = Convert.ToInt32(b);
Console.WriteLine(a*2);
Console.ReadKey();
字符串参数:
占位符:使用:先挖坑,再填坑。
注意:·挖机个坑,就填几个坑。多填无效,少填异常;
·输出顺序按照挖坑的顺序来。
字符 说明 示例 输出
C 货币 string.Format('{0:C3}', 2) $2.000
D 十进制 string.Format('{0:D3}', 2) 002
E 科学计数法 1.20E+001 1.20E+001
G 常规 string.Format('{0:G}' , 2) 2
N 用分号隔开的数字 string.Format('{0:N}', 250000) 250,000.00
X 十六进制 string.Format('{0:X000}', 12) C
string.Format('{0:000.000}', 12.2) 012.200
例如:
C: Example: Console.WriteLine(2000000.456m.ToString('C'));
Output: $2,000,000.46
//Console.WriteLine(string.Format('{0:C3}', 2))
D: Example: 45678.ToString('D8')
Output: 00045678
E: Example: 345678900000.ToString('E3' )
Output: 3.456E+011
Example: 345678900000.ToString('e')
Output: 3.456789e011
F: Example: 3.7667892.ToString('F3')
Output: 3.767
Console.WriteLine('Distance : {0,10} miles', 100) ;
Print output: Distance : 100 miles (7 leading spaces)
Console.WriteLine('Distance : {0,-10} miles', 100) ;
Print output: Distance : 100 miles (7 spaces after 100)
Console.WriteLine('Distance: {0, -12:E2} Mass: {1, -12:N} ', 100000000, 5000000);
Print output: Distance: 1.00E+008 Mass: 5,000,000.00
String.Format('{0:00000}', 15); // '00015'
String.Format('{0:00000}', -15); // '-00015'
String.Format('{0,5}', 15); // ' 15 '
String.Format('{0,-5}', 15); // ' 15 '
格式—转义序列:
表示 含义
\’ ’
\' ”
\\ \
\0 0
\b 一个退格键
\f 换页
\n 换行
\r 回车
\t 一个tab空格键
“@”的作用:1.取消“\”在字符串中的转义作用;
2.将字符串按原格式输出。(例如:换行可以直接换,而不需要\n)
文本对齐的方式:
使用空格缩进字符串:
例如:public static string Indent(int count)
{
return ''.PadLeft(count);
}
Console.WriteLine(Indent(0) + 'List'); List
Console.WriteLine(Indent(3) + 'Item 1'); Item 1
Console.WriteLine(Indent(6) + 'Item 1.1'); Item 1.1
Console.WriteLine(Indent(6) + 'Item 1.2'); Item 1.2
Console.WriteLine(Indent(3) + 'Item 2'); Item 2
Console.WriteLine(Indent(6) + 'Item 2.1'); Item 2.1
基本的字符串函数:
·将数据修改为字符串: stringObject = stringObject + 'more text'; // or
stringObject += 'more text'
例如:string s1 = 'orange';
string s2 = 'red';
s1 += s2;
·使用text: stringBuilderObject.Append('more text');
例如:Console.WriteLine(s1); // outputs 'orangered'
s1 = s1.Substring(2, 5);
Console.WriteLine(s1); // outputs 'anger'
·string p1 = '\\\\My Documents\\My Files\\';
·string p2 = @'\\My Documents\My Files\';
结构:
任何计算机程序都可以通过以各种方式结合三个基本结构而建立起来。
三个基本结构:序列:简单的一个语句接着一个语句,沿着页面向下。
判定:根据某一个条件的真假来决定是否执行某一语句。
循环:反复地执行程序。
(布尔表达式在之前已总结)
if结构:
格式:if(判断条件)
{
要执行的代码;
}
执行过程:程序运行到if处,首先判断if所带的小括号中的判断条件,如果条件成立,则执行if所带的大括号中的代码;如果条件不成立,则跳过id结构继续向下执行。
例如:if(i>90)
{
Console.WriteLine(“in牛哇”);
Console.ReadKey;
}
注:else只和离他最近的if配对。
if-else结构:
格式:if(条件)
{语句1}
else
{语句2}
执行过程:先按if的执行过程执行,但是如果不符合if条件则执行else中的代码。
例如:float score;
Console.Write('Enter the value for test score '+(Count+1)+ ' Test Score: ') ;
if( float.TryParse(Console.ReadLine(), out score) == true && (score >= 0 && score <= 100))
{
Total += score;
Count ++; // only valid input is counted
}
else
Console.WriteLine('Test value is NOT a float number from 0-100');
}
Console.WriteLine('The average score is ' + Total / HowMany);
if-else if结构:
用来处理多条件区间性判断。
格式:if(判断条件)
{要执行的代码;}
else if(判断条件1)
{要执行的代码;}
else if(判断条件2)
{要执行的代码;}
执行过程:先判断if循环条件,成立则执行if中所要执行的代码,执行结束后跳出if-else if结构;不成立则判断else if中的循环条件,此后执行过程和if的一致。
例子: if()score>=90)
{Console.WriteLine(“A”);}
else if()score>=90)
{Console.WriteLine(“B”);}
switch-case结构:
处理多条件的定值判断。
格式:switch(变量或者表达式的值)
{case 值1:要执行的代码;
break;
case 值2:要执行的代码;
break;
default:要执行的代码;
break;}
执行过程:算出switch后的值,与 值1、值2...比较,如果有相等的,则执行该case后面的代码,执行完成后遇到break,switch-case循环,如果都对不上,则执行default后面的代码。
while循环:
格式:while(循环条件)
{循环体}
执行过程:程序执行到while处,先判断while的循环条件,成立则执行while中的循环体,循环一次后用结果再次判断循环条件是否成立,成立则继续执行;不成立则跳出while循环体。
注:要定义一个循环变量来记录循环次数;
一般来说,总有那一个条件会终止循环。
例如:decimal Total = 0.0m;
int Count = 0; while (Count < 5 )
{Console.Write('Enter the sales for day '+ (Count+1)+': ');
string strInput = Console.ReadLine();
if ( strInput != '' ) // check for blank input
{
decimal Sales; // local to get new value every time it go thru the loop
if ( decimal.TryParse ( strInput, out Sales) == true && Sales > 0 )
{ Total += Sales;
Count += 1 ; // Increment the counter
}
else Console.WriteLine('Sale value is NOT a decimal number');
}
else Console.WriteLine(“MUST Enter the sales for day…');
}
do-while循环:
格式:do
{循环体;}
while(循环条件);
执行过程:首先执行while中的循环体,执行完后判断do-while循环的循环条件,如果成立,则继续执行do中的循环体;如果不成立,则跳出do-while循环你。
至少执行一次。
例如:do
{Console.Write('Enter the sales for day '+ (Count+1)+': ');
string strInput = Console.ReadLine();
if ( strInput != '' ) // check for blank input
{
decimal Sales; // local to get new value every time it go thru the loop if( decimal.TryParse ( strInput, out Sales ) == true && Sales > 0
{
Total += Sales; // Add sales to total
Count += 1 ; // Increment the counter
}
else Console.WriteLine('Sale value is NOT a decimal number');
}
else Console.WriteLine(“MUST Enter the sales for day…');
}
while (Count < 5 );
decimal Total = 0.0m; // Initialize total
int Count = 0; //Initialize the counter
for循环:
表达式1:一般声明循环变量,记录循环次数.(如:int i=0;)
表达式2:一般为循环条件.(如:i<10;)
表达式3:一般为改变循环条件的代码,使循环终有一次不再成立。(如:i++)
注:已知循环次数用for,不知循环次数用while。
例如: for (int Count = 0; Count < 100; Count++)
{
if( Count % 2 == 0 )
Console.WriteLine(Count);
}
嵌套循环:
循环体可以包括任何类型的C#语句,包括另一个循环。
例如:Display 6 row and 4 numbers of a row in each row separated by a comma
for(int row = 0; row < 6; row ++)
{
for (int column = 0; column < 4; column ++)
Console.Write('{0}, ', row+1);
Console.WriteLine();
}
数组:
作用:一次性储存多个相同类型的变量。
元素:数组中的变量成为元素,必须具有相同的类型,可以通过下标(索引)找到想要的元素。
下标的特点:假设一共有n个元素,第一个元素的下标为0,最后一个元素的下标为n-1。
格式:1.int[]nums =new int [3];
nums[0]=1;
nums[1]=2;
nums[2]=3;
注:默认数组元素的初始化为0,与整数类型相同;
字符串初始化为空。
数组名.Length 为数组的长度,也即数组元素的个数。
将一个数组中的数转到另一个数组中去:
for( int Count = 0; Count < intOldValues.Length ; Count ++)
intNewValues[Count] = intOldValues[Count];
并行数组:有时,相关数据储存在两个或者多个数组中,成为并行数组。
对两个数组使用相同的下标访问相关数据。
Int size = 2;
string[] strNames = new string[size];
string[] strAddresses = new string[size];
for( int Count = 0; Count < 5; Count ++)
{
Console.Write('Enter Full Name: ');
strNames[Count] = Console.ReadLine();
Console.Write('Enter Address: ');
strAddresses[Count] = Console.ReadLine();
}
二维数组:
格式1:DataType[,] ArrayName = new DataType[UpperRow, UpperColumn];
Column 0 Column 1 Column 2 Column 3
Row 0 array[0,0] array[0,1] array[0,2] array[0,3]
Row 1 array[1,0] array[1,1] array[1,2] array[1,3]
Row 2 array[2,0] array[2,1] array[2,2] array[2,3]
int[] array = new int[3,4];
格式2:int[,] intNumbers = new int[,]
{ {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
Col 0 | Col 1 | Col 2 | |
Row 0 | 1 | 2 | 3 |
Row 1 | 4 | 5 | 6 |
Row 2 | 7 | 8 | 9 |
例子:int[,] intNumbers = new int[,] { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} };
int total = 0;
for( int row = 0; row < intNumbers.GetLength(0); row ++)
{
int subtotal = 0;
for(int col = 0; col < intNumbers.GetLength(1); col++)
{
Console.Write('{0}\t', intNumbers[row, col]);
subtotal += intNumbers[row, col];
}
Console.WriteLine('Row Total row {0}: {1} - Table Total: {2}', row, subtotal, total+= subtotal );
随机数:
产生随机数;Random r=new Random();
int ra=r.Next(1,10);
Console.WriteLine(ra);
Console.ReadKey;
方法:
定义:方法就是将一堆代码进行重用的一种机制。
格式:public static 返回值类型 方法名 (参数列表)
{方法体;}
例如:public static void Main (string[]args)
方法写好后要在其他方法中被调用。
有效方法的调用:
要求:实际参数的类型与形式参数的类型保持一致。
函数的重载:
含义:指定方法的名称相同,但参数不同。
例如:public static void M(int n1,int n2)
{int result=n1+n2;}
public static int M(int n1,int n2)
{return n1+n2;}
三个高级参数:
侧重于在一个方法中返回不同类型的值,也可以返回多个相同类型的值。
例如:static void Main (string[] args)
{int numbers={1,2,3,4}
int max1;int min1;int sum1;
Test(sum1,min1,max1)
Console.WriteLine(max1);
Console.ReadKey();}
Public static int[] GetMaxMinSum(int[] nums,max,min)
{max=0;
min=0;
sum=0;
for(int i=0;i<nums.Length;i++)
{if (sums[i]>max)
{max=nums[i];
sum+=nums[i];}
}
}
}
}
}
能够将一个变量带入一个方法中进行改变,改变完成后,再将改变的值带出去。
用法:定义方法和调用方法时,在方法前加ref。
将实数列表中与可变参数数组类型一致的元素当做数组元素处理。
用法:定义方法时,在数组前加params。
注:params必须是形参列表中的最后一个元素,且一个参数列表中只能有一个可变参数。
类:
基础知识:
类是定义抽象数据类型的程序结构,必须先创建类。
文件:
使用文件的三个步骤:1.打开文件;
2.对文件数据进行读写;
3.关闭文件。
对于文件的操控有文件的写入、读取以及创建新文件和添加文件。首先要使用文件的方法前,要使用一个新的命名空间:using system.IO,在声明使用这个命名空间后,进而才能使用.StreamWriter和.StreamReader。而对于文件来说,写入的就不是控制台了,而是文件,所以调用的类变成了文件的名称而不是控制台,这个与前面所学的差异较大。
创建文件:
格式:File.Create(@“文件位置”)
删除文件:
格式:File.Delete(@“文件位置”)
写入文件:1.创建了文件后,文件将以文本的形式存储在创建文件的bin目录中;
2.另外,写入文件还有另一个方法——append,这个方法用于向文件中追加内容,方式与创建类似。
从文件中读取:对于文件的读取,与创建文件相反,它是通过打开一个文件来实现的,读取用到ReadLine,即每读一行就换下一行,直到读取完毕为止,并在控制台中输出,在最后读取完毕后,要将文件流关闭,即.Close()。
错误检查,处理程序:对于对文件的检查而言,主要用到了catch方法的一个错误排除,通过打开并读取一个文件,看数据类型是否与想要的一致来实现。
软件编程方面需求:
在进行编程的时候,需要用到大量的数学思维。若是数学很好的话,进修编程是很轻易的;
二、熟悉常用的英语词汇
我们知道程序都是用英文编写的,所以具备杰出的英文能力对于进修编程是有益处的。同时,英语好的话也可以阅读国外的最新的手艺资讯,扩宽本身的视野;
三、有扎实的计算机根本文化
在进修编程之前,你需要了解计算机根本文化,好比知道就算计的构成道理等;
四、喜好创造新颖的事物
创新十分重要,编程是创造新事物的工作,所以需要我们具备创造新颖事物的能力;
五、拥有足够的韧性和毅力
在进修编程的时候,我们会碰到许多的问题。这个时就要考验我们的毅力以及韧性了,在学习之前必然要先培育自身这方面的能力;
六、有充沛的时间敲代码
学习编程没有捷径,只有不断地敲代码,所以我们在学习编程时必然要用大量时间去练习敲代码;
编程相关领域前沿理论和技术发展动态、最新发展趋势、研究热点:
前沿理论:
1.JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支 持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML网页上使用,用来给HTML网页增加动态功能。
2. Python的历史可以追溯到1989年,因其高度可读的代码而深受其粉丝的喜爱。许多程序员认为这是最简单的语言开始。
Python是一种面向对象的解释型计算机程序设计语言,由荷兰人1989年发明,第一个公开发行版发行于1991年。Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。
3.Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。
4.Ruby因为易于阅读和写作而赢得了很多赞誉。Rails也是流行的,它是Ruby的一个附加框架,它使构建Web应用程序变得简单。该语言的正式座右铭是“程序员最好的朋友”。Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,遵守GPL协议和Ruby License.
5.PHP(外文名:PHP:Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域,PHP并不是一种随意的任意东西集合,而是关键字和函数工厂的虚拟爆炸.
6.C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。
7.C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。
8.Go是静态类型的语言,它的类型系统没有层级。因此用户不需要在定义类型之间的关系上花费时间,这样感觉起来比典型的面向对象语言更轻量级。Go完全是垃圾回收型的语言,并为并发执行与通信提供了基本的支持。按照其设计,Go打算为多核机器上系统软件的构造提供一种方法。
9.C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
TypeScript是一种由微软开发的自由和开源的编程语言。它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程,安德斯·海尔斯伯格,C#的首席架构师,已工作于TypeScript的开发。
技术发展动态、发展趋势:
编程发展趋势第一位: JVM不再只为Java服务
编程发展趋势第二位: JavaScript 不再只为JavaScript
编程发展趋势第三位: 代码永远不可能独善其身
编程发展趋势第四位: 围墙花园模式铺天盖地
编程发展趋势第五位: 开放性的丧失
编程发展趋势第六位: 带宽不再免费
编程发展趋势第七位: 能源同样不再免费
编程发展趋势第八位: 传统教育方式已经不再重要
编程发展趋势第九位: 准确性要求削弱,可扩展性高于一切
编程发展趋势第十位: 真正的并行架构开始付诸实践
编程发展趋势第十一位: GPU压倒CPU
研究热点:
“大云物移智区”比较热。
大:大数据。
云:云计算。
物:物联网。
移:移动互联。
智:人工智能。
区:就是区块链。
联系客服