一、 编程环境
1. 首先我们要找一个可以编程的地方,入门的话我们就不需要那么麻烦,亲自配置编程环境了。
2. 在百度搜索:在线编程编程中国,找到 在线编程-编程中国,打开这个网页。
3. 左边的框是我们编写程序的地方,右边的框是程序运行结果
4. 在语言选项中找到C#语言,(数到第5个,点击c#)我们就可以这里运行c#代码了,
5. 点击右上方的运行按钮,运行后的结果就会出现在右边的框中。
二、输出、数字、字符串
1. 我们把这些代码都删除,先不要管这些代码是什么意思,后面会讲到。。
using System;
namespace bccn {
class Program {
static void Main(string[] args){
}
}
}
2. 在c#中可以计算加减乘除法,在代码框中输入:Console.WriteLine(2+3);,不要忘了中间的点,和末尾的冒号,CWL是大写。
3. console是控制台的意思,writeline是写的意思,Console.WriteLine(2+3);你可以理解为:输出的意思,括号中的内容就是要输出的结果
Console.WriteLine(2+3);
点击右上方的运行按钮,会输出括号中:2+3 的计算结果:5。
如果你在其它编程环境下的话,你在下面还要打上:Console.ReadLine();
Console.WriteLine(2+3);
Console.Read();
4. 也可以输出一句话,在代码框中输入:console.WriteLine(“abc”),点击右上方的运行按钮,运行结果是:abc,我们把双引号中的内容叫做:字符串。
字符串就是一堆字母符号,字符串要用双引号或单引号括起来,数字不用,
// 两个斜杠后面的字是注释,程序不会执行它,它不是程序是注释
"abc" //双引号中的内容叫做字符串
5. 注意:
代码中的所有标点符号必须是切换到英语状态下的符号,如果是中文状态下打出的代码是错误的。
abc 上的双引号也必须是切换到英语状态下的,数字不需要双引号,但是字母、符号、句子都必须要带上双引号。
三、变量
1. 我们来介绍一下变量,在代码框中输入:先是int, 下来是空格,a是变量的名字,然后是a的值123
int a = 123;
2. 我们可以把变量a比较 一个"箱子",我们在这个箱子 a 中放入数字 123, 这里的 a 就是一个变量,int就是声明这个变量里放的是一个整数
3. 我们也可以在 a 中放入字符串:bbb, string就是声明这个变量里放的是一个字符串, 在代码框中输入:
string a = "bbb";
4. 输出这个变量:a ,变量也没有双引号,点击运行,就可以输出a的值:bbb
Console.WriteLine(a);
5. 这里的 a 是变量的名字,变量的名字可以随便起,但不能是数字或者符号。
int g = 234;
Console.WriteLine(g);
6. 变量之间可以相加减,其实就是a的值1,加上b的值2,等于3
int a=1;
int b=2;
Console.WriteLine(a+b); //返回 3
演示
Console.WriteLine(1+2);
Console.WriteLine(); //会自动换行
Console.Write(); //不会换行
四、数组
1. 我们来介绍一下数组,在代码框中输入:
{3, 23,100};
数组是用花括号括起来的,每个数据之间用逗号隔开,
2. 数组也可以比作一个箱子,在这个箱子中可以放入多个数字、字符串、变量……,不像变量只能放一个数据。
3. 把这个数组放入 变量 a 中。int[]意思是这个数组a中的数据都是整数。
int[] a = {3, 70,100};
string[]意思是这个数组b中的数据都是字符串。
string[] b = {"a","b","c"};
4. 数组中每个值都有一个自己的位置序号,这个位置的序号是从0开始的
5. 所以3的位置是0,abc 的位置是1,100的位置是2.
6. 我们可以根据列表中值的位置是2,可以单独把这个值100从列表中拿出来
a[2];
7. 比如我们想单独把列表中的100拿出来,先写出列表的名字a,在a的后面写上100的位置的序号2,给这个2加上方括号
8. 然后我们运行输出
Console.Write(a[2]);
五、比较符和布尔
1. 我们可以用代码判断数字的大小,比如判断一下 2 是不是小于 1,输入:
Console.WriteLine( 2 < 1 ); //返回 fasle
2. fasle的意思是假,你可以理解为是错的意思,说明 2 小于 1 是错误的。
3. 我们再判断一下 2 是不是大于 1,输入:
Console.WriteLine( 2 > 1 ); //返回true
4. true的意思是真,你可以理解为是正确的意思,说明 2 大于 1 是错误的。
5. 我们再判断一下 2 是不是等于 1,输入:
Console.WriteLine( 2 == 1 ); //返回false
6. 我们知道a = 2表示在变量 a 中放入一个2,两个等号==连在一起用就不是这个意思,
两个等号连在用,是比较左右两边的值是否相符,就是看看2是不是等于1。
六、条件语句if,就是给出一个条件,条件满足了,就执行后面的代码块,条件不满足就不会执行后面的代码。
if (条件) {
if 条件成立时执行的代码;
}
1. 我们介绍一下 if 语句,输入:if 圆括号 a<10,花括号,回车键,下面会自动空出四格,console.log(233),中间的点不要忘了。
简单 来说就是:圆括号里的代码说的对,我就执行后面花括号中的代码,如果圆括号里的代码说的不对,我就不执行后面花括号中的代码,
int a = 3;
if (a<10){
Console.WriteLine(233);
}
2. if 是如果的意思,如果 if 后面圆括号中的代码a<10成立,就会执行花括号中的代码print(233),如果不成立就不执行花括号中的代码
演示图
if(3<10){
Console.WriteLine(233);
}
3. 这 段代码的意思是:如果a 小于10,那么就输出 233,a是 3,3 小于 10,所以就会输出233
4. 如果我们把 a 的值改为 11,a现在变成了11,11大于 10,所以就不会输出233
演示图
if(11<10){
Console.WriteLine(233);
}
5. 下面接着输入:
else if(a == 1){
Console.WriteLine(244);
}
6. else if 是再如果的意思,再如果a 等于1,那么打印 244,a是 1,不等于 10,所以就不会打印244
7. 接着输入:
else{
Console.WriteLine(255);
}
8. else是否则的意思,如果上面的所有条件都不成立,那就执行:print(255)这条代码。
int a = 3
代码执行过程演示图
如果圆括号中的代码成立就执行花括号中的代码,
如果不成立就不执行花括号中的代码
if(3<10){ 如果a小于10
Console.WriteLine(233); 输出233
}
else if(3 == 1){ 再如果a小于10
Console.WriteLine(244); 输出244
}
else{ 如果上面所有的条件都不成立
Console.WriteLine(255); 输出255
}
if (条件1) {
if 条件1成立时执行的代码;
}
else if (条件2) {
els eif 条件2成立时执行的代码;
}
else {
上面所有的条件不成立时执行的代码;
}
七、循环语句,就是可以多次重复执行同个一块代码
圆括号里的代码说的对,我就执行后面花括号中的代码,花括号中的代码执行完后,我再回来看看圆括号里的代码说的对对,对的话,我还要执行花括号中的代码。
直到圆括号里的代码说的不对为止,我才停止执行后面花括号中的代码,
while (条件) {
while 条件成立时重复执行的代码;
}
1 输入下面的代码:
int a = 1;
while(a<4){
Console.WriteLine("abc ");
a = a + 1;
}
2. while 圆括号 a<5,花括号,回车键,下面会自动空出四格,Console.WriteLine("abc ");abc后面空一格
3. while 是 当 的意思,如果 while 后面的代码a<4成立,就会重复执行下一行代码Console.WriteLine(“abc”),直到while 后面的代码a<4不成立才会停止。
4. 这个和 if 语句有点像,只是冒号后面的代码Console.WriteLine(233)会重复多次执行。
5. 我们有什么办法让它自动停下来,我们可以在Console.WriteLine(233)下面再加上 a = a + 1
6. a = a + 1的意思是每重复执行一次,a 就会增加1,
7. 当a加到5 时,a<5的条件就不满足了,循环便会停止。
这是代码执行时的过程演示,不是真正的代码
int a = 1;
循环过程示意图:
第一次循环
while(1<4){
Console.WriteLine("abc");
2 = 1 + 1;
}
第二次循环
while(2<4){
Console.WriteLine("abc");
3 = 2 + 1;
}
第三次循环
while(3<4){
Console.WriteLine("abc");
4 = 3 + 1;
}
第四次循环
while( 4<4 ){
Console.WriteLine("abc");
5 = 4 + 1;
}
八.、我们也可以用 for 循环语句来重复执行一段代码。
for (条件) {
for 条件成立时重复执行的代码;
}
1. 先是一个for,然后是圆括号,接下来是在圆括号内的一个整数类型4 变量a,
变量的值是1,下来是一个分号,比较一下a是不是小于4,还是一个分号,让a增加1,
接下来是一个花括号,回车键,下行自动空出四格,最后打印出 abc,abc后面空一格
for( int a = 1; a < 4; a = a + 1 ){
Console.WriteLine("abc");
}
2. 这段代码的意思 是:当变量a小于4这个条件满足的时候,就会重复执行花括号中的代码:
Console.WriteLine("abc");
当变量a小于4这个条件不满足的时候,就停止执行。并且每重复执行一次,变量a就会增加1
for( int a = 1; a < 4; a = a + 1 ){
Console.WriteLine("abc");
}
循环过程演示:
第一次循环
for( int a = 1; 1 < 4; 2 = 1 + 1 ){
Console.WriteLine("abc");
}
第二次循环 for( int a = 2; 2 < 4; 3 = 2 + 1 ){
Console.WriteLine("abc");
}
第三次循环
for( int a = 3; 3 < 4; 4 = 3 + 1 ){
Console.WriteLine("abc");
}
第四次循环 for( int a = 4; 4 < 4; 5 = 4 + 1 ){
Console.WriteLine("abc");
}
3. 代码块:代码块就是把多行代码放在一个封闭的区域内一起执行。
一个if语句是一个代码块,一个循环语句也是一个代码块,一个函数也是一个代码块。
一般来说一个花括号括内的区域就是一个独立的代码块。
九、类,我们也可以把类比作一个模型,可以根据这个模型(类)来制造出具体的产品,我们把具体的产品叫作对象或者实例。
比如说我们可以先在图纸上设计一座房子的模型,我们可以根据这个房子的模型(类)来建造出一座真实的房子,
我们把图纸上的房子模型叫做类,把根据图纸建好的房子叫做这个类的实例
对房子的的类a来说:它有长和宽,还可以根据面积公式算出它的面积。
实例对象就是一个真实存在的房子,它有具体的边长4,有具体的宽3。
1. 我们准备定义一个房子的类,先是一个class,class就是类的意思, 然后空一格,类的名字a,花括号,
我们在类a 里有一个变量c, public的意思公开,就是在别的类里面还可以访问这个变量b,比如说在program类中也可以访问这个变量b。
现在我们知道 class program其实也是一个类。
变量c就是这个房子的长。
变量k就是这个房子的宽。
using System;
namespace bccn {
class a{
public int c;
public int k;
}
class Program{
static void Main(string[] args){
a a1 = new a();
a1.c = 4;
a1.k = 3;
Console.WriteLine(a1.c);
}
}
}
new a()就是根据模型a创造了一座真实的房子,我们把这个真实的房子放入在名字叫a1的变量中,a1的变量的类型是 a.
有点像设置变量时在变量前加一个类型int c,意思是变量c的类型是int类就是整数类。
2. 在program类中我们可以根据a类创造一个真正的房子a1,
a a1的意思 就是a1的类型是a类,有点像设置变量时在变量前加一个类型int c,意思是变量c的类型是int类就是整数类。
new 就是新创造一个具体的房子(实例),这个具体的房子a1的长c是4,这个具体的房子的名字叫a1。
a就是一个类,a1就是这个类的一个实例。
3. 我们还要设置变量c和k的值,a1点c,可以理解为a1的c,
就是真实房子a1的长c是4,真实房子a1的宽k是3,
如果你写c =4,k=3,就是错的。
a1.c = 4;
a1.k = 3;
Console.WriteLine(a1.b);
5. 我们可以用方法计算出这个长方形的面积长C乘以宽K,如果我们学过其它编程语言,就会知道其实m就是一个函数
public int 方法名(参数1,参数2) {
return 返回值
}
public int 机器名(原料1,原料2) {
出料口 产品
}
public int m( ) {
return c*k;
}
我们可以把方法比作一台机器,这机器里可以放入多个代码块一起执行,比如可以放入变量、数组、if条件语句、循环语句……。
public是指这个机器是可以被其它类调用,int关键字是指这个机器的产品是个整数,如果把int 改为void,就表示这个机器没有产品。
m是这个机器的名字()就是机器的入料口,可以向这个机器的入料口添加原料,也可以不添加。
花括号内就是机器的具体的运行过程,return是返回的意思,return 后面就是要生产出的产品c乘以k,就是长乘以宽,也就是这个长方形的面积。
6. 然后我们就可以在program类中通过方法m得到这个长方形a1的面积了。
我们要使用这个计算面积的机器,就要打开这个机器的开关,打开这个机器的方法就是:a1.m(),
a1.m(),a1.m可以理解为a1的m机器,()可以理解为这个机器的入料口,由于这个机器不需加入原料,所以()是空的。
a1.m();
7. 下面是不是标准代码,是演示。把a1.m(),放入program类,就等于在program中起动了这个机器,
代码执行过程演示
public int m( ) {
return 4 * 3;
}
8. 我们可以输出这个方法的返回值
class Program {
static void Main(string[] args){
a a1 = new a();
a1.c =4;
a1.k = 3;
Console.WriteLine(a1.m());
}
}
9. 我们也可以在变量c和k初始化的时候设置它们的值
public int c=4;
public int k=3;
10. 我们也可以在其它类中直接修改c和k的值
a1.c =10;
a1.k =7;
using System;
namespace bccn {
class a{
public int c=4;
public int k=3;
public int B(){
return c*k;
}
}
class Program{
static void Main(string[] args){
a a1 = new a();
a1.c =10;
a1.k =7;
Console.WriteLine(a1.B);
}
}
}
11. 如果我们不想让在其它类中访问c和k,可以把public改为private,public是公开,private是私有,
private int c=4; private int k=3;
变量前有private关键字的是私有变量,只能本类才能访问,其他类都访问不了,
Console.WriteLine(a1.c); //会报错
Console.WriteLine(a1.k);
12 如果我们想在其它类中访问到私有变量c,可以用使用方法来访问
public是指这个方法可以在其它类中被调用
void是指这个机器没有产品,就是这个方法没有返回值。括号中的c1就是原料,int 是指这个原料是整数,我们把这个原料叫做参数。
我们把这整数c1传给了私有变量c。
using System;
namespace bccn {
class a{
private int c; //私有变量
public int k; //公开变量
public void setc( int c1 ){
c = c1;
}
public int getc(){
return c;
}
}
class Program{
static void Main(string[] args){
a a1 = new a();
a1.setc(4);
a1.k = 3;
Console.WriteLine(a1.getc());
Console.WriteLine(a1.k);
}
}
}
13. 在初始化的时候,为类里面的变量一个一个的赋值很方麻烦,我们可以使用构造函数就简单的多了。
构造函数的名字要和类的名一样都是a。
这样在new的时候就可以直接把参数写在括号中a(4, 3),不用一个一个的赋值。
using System;
namespace LineApplication {
class a{
public int c;
public int k;
public a(int c1, int k1){
c = c1;
k = k1;
}
static void Main(string[] args){
a x = new a(4, 3);
Console.WriteLine(x.c);
Console.WriteLine(x.k);
}
}
}
14. 类的继承,子类可以使用父类的属性和方法,
using System;
namespace bccn {
class f{
public void f1( ){
Console.WriteLine("我是父类");
}
}
class z: f{
public void z1(){
Console.WriteLine("我是子类");
}
}
class Program {
static void Main(string[] args){
z x = new z();
x.f1();
}
}
}
15. 方法重写,父类方法的功能不能满足子类的需求,可以在子类中重写父类的方法,
using System;
namespace bccn {
class f{
public void f1( ){
Console.WriteLine("我是父类");
}
}
class z: f{
public void z1(){
Console.WriteLine("我是子类");
}
public void f1(){
Console.WriteLine("我改写了父类的f1方法");
}
}
class Program{
static void Main(string[] args){
z x = new z()
x.f1() //子类使用重写过的父类的方法
x.z1() //子类使用自己的方法
}
}
}
16. 对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问
class f{
constructor(a) {
this.a = a;
}
get a(){
return this._a;
}
set a(a){
this._a = a;
}
}
let x = new f(2);
console.log(x._a);
17. 现在我们知道这也是一个函数或方法。
static说这是一个静态方法,void说这个方法没有返回值,Main是这个函数的名字,括号中的args是参数,string[]说明这个参数是数组
static void Main(string[] args) {
}
18 .static方法不需要实例化,类可以直接调用
using System; namespace bccn {
class f{
public static void a(){
Console.WriteLine("我是静态方法");
}
}
class Program{
static void Main(string[] args){
f.a();
}
}
}
19.namespace是命名空间的意思,你可以把命名空间看作一个文件,这个文件的名字叫bccn。
namespace bccn {
}
20. using System的意思是引入c#程序自带的名字叫System的命名空间。
using System