程序基础(一)
一、不忘初心,方得始终!
二、学习写程序中用到的一些基础性的知识和操作等,主要是对以下几个方面进行讲解。
三、重要掌握的知识点:函数的应用。
(一)开发入门
(二)变量和数据类型
(三)运算符和表达式
(四)流程控制
(五)数组与集合
(六)函数
下面是我对每个点的重点理解和总结:
(一)开发入门
1、从一段代码开始:在控制台中输出:Hello.World,主函数中的代码如下:console.WriteLine(hello.world);
2、计算机语言就是人与计算机沟通的语言,源代码是用某种计算机编写的内容,编译就是把源代码转换为机器代码。
3、程序的开发过程:Code(编码)、 Compile(编译)、 Run(运行)。
i. C#使用的编译器是csc.exe,编译的结果保存到exe文件中。
ii.C#如何编译:打开运行对话框(win+r-->cmd)。打开编译器:cd 编译器地址 编译文件:csc /out:编译后存放的路径 源代码位置。
4、IDE(Intergrated Development Environment):集成开发环境,例如visual studio、webstorm等。
5、主函数(main函数)又叫入口函数,程序启动时运行的函数,运行时,程序从上到下依次运行每一句代码,主函数运行结束后,程序结束。
6、输出语句:向控制台的当前位置输出文本。代码输出方式:Console.Write("文本类容");表示向当前位置输出一短文本。Console.WriteLine("文本类容");表示向当前位置输出一段文本,然后换行。
(二)变量和数据类型
1、数据类型是数据的概括,数据是指有用的信息,C#中常见的类型有char(字符),string(字符串),double(小数),int(整数)等。
2、计算机中一切数据都由0(低电平)和1(高电平)组成。ASCII编码共占用8位,7位有效位,共可以编码128个字符。1字节=8位。
3、认识变量;一块存放数据的内存空间,并且与该区域的数据内容可以变化,新的数据可以覆盖以前的。在代码中使用变量,必须先声明再赋值。变量的声明:指定一块内存空间,用于存放。
变量的声明:数据类型 变量名;
变量的赋值: 变量名=数据;(將数据存放到变量)
注意:
变量名在声明和赋值时要完全相同。
声明的类型和赋值的类型要完全相同。
4、变量的命名: 给变量取的名称。
硬性要求:只能由数字,字母,下划线组成,变量名不得以数字开头,名称不能与关键词相同,同一个函数中变量名不得相同。
软性要求:变量名要望文知意,变量名首字母要小写,除第一个单词外其他单词字母要大写。(驼峰命名法)
5、变量的使用技巧:i.对多个同类型的变量声明,可以在一条声明语句中完成。ii.在声明时初始化。
6、变量的三要素:数据类型、变量名、变量值。(三要素缺一不可)
7、数据运算:支持运算(+),(—),(*),(/),(%)返还类型与运算类型相同。 运算类型 int与int类型运算 返还类型:int。double与double类型运算 返还类型:double。double类型与int类型运算返回类型:double。
8、运算类型: 將一个类型的数据转换成另一个新的类型的数据,原数据不变。任意类型转换 string。待转换的数据.ToString(); 返回类型:string。
类型转换总结图:
double 互转 int:
取值范围小的数字类型转化取值范围大的数字类型用隐式转换,不需要额外的代码,计算机自动完成转换。
取值范围大的数字类型转化取值范围小的数字类型用显式转换 需要编写额外代码,计算机不会自动转换。
double转换为int:int(带转换的字符);
int转换为double:直接写成int a=b(b是double类型);
string 转换 数字类型,string 转换 int,int.Parse(待转换的字符串)。
string 转换 double double.Parse(待转换的字符串),返回类型:double。
补充:数字类型
9、转义符:\n(换行符)、\t(制表符)、\\(转移符,输出斜杠\)。
10、代码注释:单行文本注释(//注释内容)、多行文本注释(/***注释类容**/)、文档注释(在函数签名前面输入///,系统会自动补全)。
(三)开发入门
1、运算符和表达式:运算符(操作符)是一个用于运算的符,他作用于一个或多个操作符。
2、逻辑运算符:用于判断真假,返回的值为false或者true。常见逻辑运算符。&&,两个bool类型进行运算时,真真为真 其他为假。||,两个bool类型进行运算,假假为假 其他为真。! 除了他是一元运算符其他全是二元运算符。bool类型 用于表示真假两种状态的类型 true和false。
3、位运算符:用于进制运算。常见的有:&与、|或、^异或、<<左移、>>右移、~取补。
位运算总结图:
4、算数运输符:+,-,*,/,%,++,--。书写方式:变量名++,计算返回结果,与变量相同,將变量的值自增1 。书写方式:++变量名,计算返回结果为变量值变量值加1,將变量的值自增1。
5、赋值运算符:=,+=,-=,*=,/=,%=,他意思是x+=运算代码 x=x+运算代码。赋值符号不能用于变量初始化 返回结果与变量值相同。
6、三目运算符:操作数1 ?操作数2 : 操作数3,操作数1必须是bool类型,其他可以任何类型,但操作2和操作3类型必须相同,如果操作数1判断为真,操作数2为返回结果
如果操作数1判断为假,操作数3位返回结果。
7、常见的运算符(小括号)()用于:类型转换、改变运算顺序、函数调用。
8、表达式:一条有意义的语句,并且该语句至少包含一个操作数和一个操作符 ,每一个表达式都有一个返回类型,每个表达式都可以与其他表达式进行运算,只要类型符合要求。
9、使用多个运算符的常见场景:
i.赋值运算,永远最后运行。数字运算,按照数学中的运算顺序进行。
ii.类型转换和函数调用,这里的类型转换是指显式转换。
iii.使用多个运算符的常见场景,逻辑运算,在逻辑运算时,將&&和||符号两端的表达式看做一个整体。
iv.其他运算,在不知顺序的情况下,使用小括号或分开书写来控制运算顺序。
v.三目运算,a>b?"123":b.ToString();//如果a>b,则取123的结果,否则取b.ToString();
(四)流程控制
1、流程图:使用标准化的图形方案,分析某个功能的实现步骤
2、常见的流程控制语句分类:
类别 关键字
选择语句 if、else、switch、case
循环语句 do、for、foreach、in、while
跳转语句 break、continue、default、goto、return
3、if判断流程控制语句 。代码格式:
if(条件1){
} else if(条件2){
}else(条件3){
}
表示如果条件1成立,则执行代码,否则判断2是否成立,如果成立则执行代码2,如果都不成立,执行代码N,如果某个大括号只有一句代码,则可以省略掉。
4、变量作用域,可以简单的理解,某个变量在定义所在的大括号,在大括号内,该变量有效,大括号外无效,在某个位置定义变量的时候,变量名不得与作用域覆盖该位置的变量名相同。
5、switch循环 代码格式:
switch(变量或表达式):
case 值1:代码1;
break;
case 值2 :代码2;
break;
default:代码N;
break;
先计算变量或表达式的值,將该值从上到下依次和case后面的值进行比较,若与某一个case后面的值相同,则运行该case下面的代码,若与所有的case后面的值都不相同,则运行default后面的代码 。
6、while循环 表达意义,如果代码为真,则执行循环体,之后再判断是否为真,就这样一直执行下去,直到为假,才结束。返回类型必须是bool类型。
7、do while循环: 先执行循环体,再判断条件是否满足,如果满足则执行,再判断,直到为假才结束。
8、for循环:运行表达式1,判断是否为真,如果为真则执行循环体,执行完再运行表达式2,接着在判断循环条件,直到为假才结束。
示例:打印九九乘法表
for (int i = 1; i <= 9; i++){
for (int j = 1; j <= i; j++){
Console.Write(j + "*" + i + "=" + i * j + "\t");
}
Console.WriteLine();
}
Console.ReadLine();
9、break和continue。
i.break,立即结束当前循环。
ii.continue,立即结束当次循环,进入下一次循环。
10、查找问题,根据需求,在一组数据中找到需要的数据。
11、简单查找 在样本中一次寻找目标数据,循环一点是从样本的第一个数据开始,在到达样本最后一个数据后结束,循环中一定包含一个判断,给判断用于判断当前的数据是否是目标类型。
(五)数组与集合
1、数组,能存放任意多个同类型的数据 单个的数据叫做数组项 排序的名称叫做 索引(下标) 从0开始,依次为数组中每一个数组编号 int类型。
2、声明:数据类型[ ]变量名 赋值:变量名=new 数据类型[长度];。
3、一个数据创建和它每一个数组项的值为数组项类型的默认值。数据项的读取与修改。读取:变量名[索引]。修改:变量名[索引]=值;。
4、读写数据的长度 ,变量名.Length。 定长性,一个数组在创建后它的长度固定不变 。
5、数组的遍历 是指从数组的第一场开始依次取完数组的所有项 ,要实现数组的遍历,可以使用循环,循环变量从0开始,依次取到数组的最大下标(数组的下标-1),在循环中使用循环变量作为下标即可取出数据每一项的值。
6、集合,List<数据类型> 变量名;赋值:变量名=new List<数据类型>();。添加元素:变量名.Add(要添加的数据)(在集合的后面添加元素);插入元素:变量名.Insent(索引,要插入的数据)(在集合指定位置插入元素)。
7、删除元素:变量名.RemovAt(索引)(删除指定下标的元素);变量名.Remove(数据)(删除集合中第一个位置出现的数据);修改元素 ,变量名[索引]=值;元素。 获取集合的长度:变量名.Count。
集合的操作总结图:
8、foreach循环,只能用于遍历数组或集合,代码格式:foreach(数据类型 变量 in 数据或集合)
for和foreach的对比:
for:可以用于任何形式的重复行为、在循环体中,可以进行任何操作、遍历速度慢,执行效率低。
foreach:只能用于遍历、不能更改循环目标、遍历速度快,执行效率高。
(六)函数
1、认识函数:函数用于解决重复代码,难以阅读。好处:具有独立功能,并能通过名称重复使用的代码。减少重复代码,并使代码简洁易读。
2、函数的声明必须在class中。
3、函数的声明和调用:
声明:函数的声明是指给一段代码取名称。
static void 函数名(){
//函数体
}
调用:函数的调用是指通过函数名称去执行函数体。
语法:函数名();
4、作用域和标识符:
作用域:一个变量,仅在它所定义的大括号中有效;不同作用域中的变量,拥有独立的内存空间;当作用域结束时,该变量的数据会从内存中移除。
标识符:变量名,函数名,类名,接口名,委托名,其他;必须符合标识符的命名规范(驼峰命名法)(变量名 首字母小写)(函数名 首字母大写);注意:标识符必须有数字、字母、下划线组成,并且不能以数字开头,若不满足该要求,则出现编译错误;除标识符本身的要求外,不同的标识符有自己的特殊要求。
5、 声明带参数的函数:要完成一件事,需要知道的额外条件。书写语法:数据类型 参数名,数据类型,参数名......
static void Add(int a,int b){
//输出a+b的结果
}
声明函数时,参数必须包含数据类型和参数名,在函数体中,可以将参数当做变量使用。
6、调用带参数的函数:
调用语法:函数名(参数列表)
函数去完成一件事时,如果需额外的条件,就必须声明函数;声明函数时,必须指定每个形参的类型和名称;调用函数时,实数的数量和类型必须和形参匹配;实参和形参相互独立。
7、 声明带返回值的函数:
函数的声语法:
static 返回类型 函数名(形参列表){
函数体
}
8、调用带返回值的函数语法:函数名(实参列表)。
9、函数签名:函数签名是一个函数的函数名、参数列表、返回类型的统称。
10、学习函数的关键在于编写正确的函数签名,对于函数实现者者,仅需要知道函数签名即可,函数签名,是函数体要实现的目标。对于函数调用者,也仅需要知道函数签名即可。
示例:
//从指定的连接地址下载文件,保存到指定路径
static void DownFile(string fileUrl,string savePath)
11、可使用文档注释来解释模糊的函数签名。
12、函数重载(overload),多个函数可以使用同一个函数名;重载的条件是参数的数量或者类型不同;重载的作用是降低调用难度;当调用重载的函数时,计算机会根据实参自动匹配。
13、函数的相互作用:在任何函数体中,都可以调用函数。只要代码运行到调用的函数的语句,就会去执行调用的函数体。
14、递归:是指在函数体中直接或间接的调用自身;递归必须有终止条件,否则,将会出现无限递归;无限递归会耗尽内存,导致程序崩溃,必须避免。