c#很详细学习汇报很适合初学者和深度学习的人案例讲解都有.docx
《c#很详细学习汇报很适合初学者和深度学习的人案例讲解都有.docx》由会员分享,可在线阅读,更多相关《c#很详细学习汇报很适合初学者和深度学习的人案例讲解都有.docx(40页珍藏版)》请在冰豆网上搜索。
c#很详细学习汇报很适合初学者和深度学习的人案例讲解都有
7.30学习汇报
1.阅读了C#程序设计学习资料,总结为以下几点
2.简介与开发环境
3.简介:
C#是微软所设计的一种物件导向语言(所谓的物件导向语言1.抽象资料型态,2.封装,3.继承,4.多型,5.覆盖,6.动态连接),是一个功能很强大的整合开发环境,包含视觉化设计模式、整合除错环境、方便的程序编辑环境等等。
VisualStudio可分为三个版本,企业版、专业版以及简洁版,其中企业版与专业版是需要付费购买的,而简洁版则是免费的。
通常一般的学习者使用简洁版就好了,简洁版只是缺少一些系统分析、团队合作、以及企业报表等工具之外,其他的部分,象是视觉化设计模式、整合除错环境、方便的程序编辑环境等,都已经包括在内。
4.命令列工具:
微软的C#语言的编译器是csc.exe这个执行档,这个档案通常被安装在.NET的路径下。
可以使用「csc文件名称」的指令,编译特定的C#程序,例如用cscHello.cs指令就可以将Hello.cs编译为Hello.exe
5.视窗程序设计:
。
微软目前的视窗开发套件有两种,比较旧但却很成熟的一种称为WindowForms,比较新但却较少人用的一种称为WPF(WindowsPresentationFoundation)。
因为目前还有浏览器并不支持XAML语法以创建使用者界面
6.C#使用的数据库是是MS.SQL与Access数据库。
网路主要用的是TCP/IP网络基础函式库Socket,网页采用的是微软的网页服务器IIS,游戏采用的是XNA游戏开发平台
7.变量与表达式
8.简介
以下是一个完整的C#程序(Hello.cs),可以印出Hello!
。
usingSystem;//引用System函式库
publicclassHello//宣告类别Hello
{
publicstaticvoidMain()//类别Hello的主程序
{
Console.WriteLine("Hello!
");//印出Hello!
}}
9.变量与型态
变量是程序用来储存资料的地方,程序透过变量存取资料,并透过指定叙述(Assign)搬移资料。
C#是一个强型态的语言,每个变量都必须要指定型态,C#中常用的基本型态包含字符(char)、整数(int)、实数(float)、字符串(string)、布林(bool)等,以下是这些基本型态的一些范例。
inta=3,b=a;//整数
doublepi=3.14;//浮点数
charc='H';//字符
stringmsg="Hello!
";//字符串
boolx=true,y=false;//布林(逻辑)
stringstr="a="+a+"b="+b;
Console.Write(str);
移位运算<<的意义,代表左移,而>>则是右移的意思。
举例而言,x<<2代表将x视为位元串,并且向左移两位。
因此若x是一个值为2的整数(int),由于其二进位表达式为00000010。
所以当我们执行表达式x=x<<2后,x将会变成00001000,也就是十进制的8,请看下列范例。
intx=2;//x=00000010=2
x=x<<2;//x=00001000=8
表达式测验案例
intx=3,y=5;
x=y;
x=x<<2;
boolt=true,u=false;
boola=t&&u;//a=trueandfalse=false
boolb=t||u;//b=trueorfalse=true
boolc=!
u;//c=!
false=true
intd=x&y;//d=00010100AND00000101=00000100=4
inte=x|y;//e=00010100OR00000101=00010101=21
10.流程控制
11.简介
在结构化的程序语言中,流程控制是以判断(if,switch)与循环(for,while)为主的。
12.if语句实现平年闰年的判断
//intyear=2018;
Console.Write(“请输入年份”)
Stringmonth=console.ReadLine();
if(year%4=0&&year%100!
=0)||(year%400==0)
Console.WriteLine(year+“该年为闰年”);
elseConsole.WriteLine(year+“该年为平年”);
13.for语句
C#当中的循环语法,包含for,while,foreach等,foreach的语法则是新创造的,其使用上比for语法更方便。
for循环的语法如下所示,其中的EXP1用来设定索引变量的初值,EXP2用来判断是否应跳出循环,EXP3则是累加条件。
for(EXP1;EXP2;EXP3)
BLOCK;
举例计算从1加到100的结果,就可以利用下列程序
intsum=0;
for(inti=1;i<=100;i++)
sum+=i;
14.While语句
while循环的语法比for循环更简单,其语法如下范例所示,其中的EXP是一个逻辑判断式,用来判断是否应该离开循环。
在还没离开之前,会不断的重复执行BLOCK区块。
while(EXP)
BLOCK
举例用while实现计算从1加到100的结果,就可以利用下列程序
intsum=0;
inti=1;
while(i<=100)
{
sum=sum+i;
i++;
}
7.31学习汇报
15.阅读了C#程序设计学习资料,总结为以下几点
16.阵列
17.简介:
阵列是传统程序设计上用来存储很多个元素的资料结构。
有了阵列,我们就可以将无数的资料放入程序当中以供存取、排序或搜寻。
虽然在现代化的语言当中都会有其他更方便的容器存在,象是字典,但这些容器也通常是利用阵列所实做出来的。
18.一维阵列
∙C#当中的阵列式用中括号的方式宣告的。
举例用一个阵列存储一年当中每个月的天数,用下列程序表示。
int[]days={31,28,31,30,31,30,31,31,30,31,30,31};
∙我们可以通过循环的方式,逐一存储阵列的内容。
例如存储一年中所有月份的天数总和。
intcount=0;
for(inti=0;i<12;i++)
count+=days[i];
∙也可以用foreach语句计算天数的总和,用d变量取出每个月的天数,然后加入count中
intcount=0;
foreach(intdindays)
count+=d;
1.二维阵列
以下我们用「矩阵加法」作为范例,以说明C#二维阵列的用法。
写出矩阵的加法int[,]c=matrixAdd(a,b)
staticvoidMain(string[]args)
{
int[]a={1,2,3,4,5};
int[]b={3,3,3,3,3};
int[]c=newint[5];
for(inti=0;i{
c[i]=a[i]+b[i];
}
int[]d=newint[5];
arrayAdd2(a,b,d);
int[]e=arrayAdd(a,b);
printArray(a);
printArray(b);
printArray(c);
printArray(d);
printArray(e);
}
staticvoidprintArray(int[]x)
{
for(inti=0;iConsole.Write(x[i]+"");
Console.WriteLine();
}
staticvoidarrayAdd2(int[]x,int[]y,int[]z)
{
for(inti=0;i{
z[i]=x[i]+y[i];
}
}
staticint[]arrayAdd(int[]x,int[]y)
{
int[]z=newint[x.Length];
for(inti=0;i{
z[i]=x[i]+y[i];
}
returnz;
}
2.函数
3.简介
C#分为静态函数与成员函数两类,静态函数附属于类别,呼叫时可以直接指定类别名称即可。
成员函数附属于物件,呼叫时必须透过物件变量进行呼叫。
C#参数分为两类传值参数象是int,double,char,...等,传址参数象是StringBuilder,阵列等。
4.C#的静态函数
传值参数范例,其中的square就是静态函数,其功能是将传入的数值进行平方动作后传回。
usingSystem;
classFunc1
{
publicstaticvoidMain(string[]args)
{
intx=square(5);
Console.WriteLine("x="+x);
}
publicstaticintsquare(intn)
{
returnn*n;
}}
5.函数的参数
6.阵列也可以用来作为函数的参数,由于阵列的传递采用传址的方式,因此在函数中对阵列的修改将会是永久性的修改,离开函数后并不会恢复成原先的数值。
以下范例中的add函数用来将两个二维阵列(x,y)相加,然后将结果放入z当中,print函数则是将传入的阵列x印出来。
必须注意的是,对于二维阵列而言,要取得阵列的第一维元素个数(列数),可GetLength(0),要取得阵列的第二维元素个数(行数),必须使用GetLength
(1)。
举例
staticvoidMain(string[]args)
{
sum(10);
sum(20);
sum(30);
}
staticvoidsum(intn)
{
ints=0;
for(inti=1;i<=n;i++)
{
s=s+i;
}
Console.WriteLine("s="+s);
}
8.1学习汇报
7.阅读了C#程序设计学习资料,总结为以下几点
8.物件
9.简介:
C#将资料与程序被合并成一个结构,这个结构就称为物件。
一个物件可以包含资料部分(资料成员)与函数部分(函数成员),函数成员可以对资料成员进行操作,以下是一个C#的物件范例,该范例中定义了一个人员(Person1)的结构,该结构包含两个资料成员(name,weight)与一个成员函数(checkWeight),该函数会检查人员结构的体重(weight)看看是重还是轻。
另外,还包含了一个建构函数Person1(),这个建构函数可以让使用者在建立物件时顺便将参数传入,这是物件导向的一种常见手法。
10.举例测试体重
classObject1{
publicstaticvoidMain(String[]args){
Person1p1,p2;
p1=newPerson1("大雄",50);
p2=newPerson1("胖虎",80);
p1.checkWeight();
p2.checkWeight();
p2.weight=68;
p1.checkWeight();
p2.checkWeight();
}}
classPerson1{
publicstringname;
publicintweight;
publicPerson1(stringpName,intpWeight){
name=pName;
weight=pWeight;
}
publicvoidcheckWeight()
{
Console.Write(name+"体重"+weight+"公斤,");
if(weight<70)
Console.WriteLine("很苗条!
");
else
Console.WriteLine("很稳重!
");
}
}
11.封装
12.简介:
在传统的结构化程序设计(象是C,Fortran,Pascal)当中,我们用函数来处理资料,但是函数与资料是完全区隔开来的两个世界。
然而,在物件导向当中,函数与资料被合为一体,形成一种称为物件的结构,我们称这种将函数与资料放在一起的特性为「封装」。
13.范例一:
封装--将函数与资料装入物件当中
usingSystem;
classRectangle
{
doublewidth,height;
doublearea()
{
returnwidth*height;
}
publicstaticvoidMain(string[]args)
{
Rectangler=newRectangle();
r.width=5.0;
r.height=8.0;
Console.WriteLine("r.area()="+r.area());
}
}
执行结果
r.area()=40
修改进化版,加上建构函数也叫构造函数
usingSystem;
classRectangle
{
doublewidth,height;
publicRectangle(){}
publicRectangle(doublew,doubleh)
{
width=w;
height=h;
}
publicdoublearea()
{
returnwidth*height;
}
publicstaticvoidMain(string[]args)
{
Rectangler=newRectangle(5.0,8.0);
Console.WriteLine("r.area()="+r.area());
Rectangler2=newRectangle();
r2.width=7.0;
r2.height=4.0;
Console.WriteLine("r2.area()="+r2.area());
}}
8.2学习汇报
14.阅读了C#程序设计学习资料,总结为以下几点
15.向量物件
16.简介:
案例如下
classVector
{
double[]a;
publicVector(double[]array)
{
a=newdouble[array.GetLength(0)];
for(inti=0;i{
a[i]=array[i];
}
}
publicVectoradd(Vectorv2)
{
Vectorrv=newVector(v2.a);
for(inti=0;i{
rv.a[i]=this.a[i]+v2.a[i];
}
returnrv;
}
publicvoidprint()
{
for(inti=0;i{
Console.Write(a[i]+"");
}
Console.WriteLine();
}
}
classTest
{
publicstaticvoidMain(string[]args)
{
Vectorv1=newVector(newdouble[]{1.0,2.0,3.0});
Vectorv2=newVector(newdouble[]{4.0,5.0,6.0});
Vectorv3=v1.add(v2);
v1.print();
v2.print();
v3.print();
}}
17.继承
18.范例一:
矩形、圆形继承形状(Shape)
usingSystem;
classShape
{
publicdoublethick;
publicvirtualdoublearea(){return0.0;}
publicdoublevolume()
{
returnarea()*thick;
}
}
classRectangle:
Shape
{
doublewidth,height;
publicRectangle(doublew,doubleh)
{
width=w;
height=h;
thick=2.0;
}
publicoverridedoublearea()
{
returnwidth*height;
}
}
classCircle:
Shape
{
doubler;
publicCircle(doubler)
{
this.r=r;
thick=3.0;
}
publicoverridedoublearea()
{
return3.1416*r*r;
}
}
classTest
{
publicstaticvoidMain(string[]args)
{
Shapes=newShape();
Console.WriteLine("s.area()="+s.area());
Rectangler=newRectangle(5.0,8.0);
Console.WriteLine("r.area()="+r.area());
Console.WriteLine("r.volume()="+r.volume());
Circlec=newCircle
(2);
Console.WriteLine("c.area()="+c.area());
Console.WriteLine("c.volume()="+c.volume());
c.thick=5;
Console.WriteLine("c.volume()="+c.volume());
}
}
请定义「人、学生与老师」等三个类别,其中的人有「姓名、性别、年龄」三个栏位,学生另外有「学号、年级」等两个栏位,老师另外有「职等」的栏位,所有物件都有print()函数,可以将该物件的所有栏位印出。
请建立一个具有3个学生与两个老师的阵列,利用多型机制,呼叫print函数以便印出这5个人的基本资料,如下所示。
学生--姓名:
王小明,性别:
男,年龄:
20,学号:
R773122456,年级:
一年级
学生--姓名:
李小华,性别:
女,年龄:
19,学号:
R773122432,年级:
一年级
教师--姓名:
陈福气,性别:
男,年龄:
40,职等:
教授
学生--姓名:
黄大虎,性别:
男,年龄:
22,学号:
R773122721,年级:
四年级
教师--姓名:
李美女,性别:
女,年龄:
35,职等:
助理教授
解答:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespacePerson
{
/*
*请定义「人、学生与老师」等三个类别,其中的人有「姓名、性别、年龄」三个栏位,
*学生另外有「学号、年级」等两个栏位,老师另外有「职等」的栏位,所有物件都有
*print()函数,可以将该物件的所有栏位印出。
*
*请建立一个具有3个学生与2个老师的阵列,利用多型机制,呼叫print函数以便
*印出这5个人的基本资料,如下所示。
*
*学生--姓名:
王小明,性别:
男,年龄:
20,学号:
R773122456,年级:
一年级
*学生--姓名:
李小华,性别:
女,年龄:
19,学号:
R773122432,年级:
一年级
*教师--姓名:
陈福气,性别:
男,年龄:
40,职等:
教授
*学生--姓名:
黄大虎,性别:
男,年龄:
22,学号:
R773122721,年级:
四年级
*教师--姓名:
李美女,性别:
女,年龄:
35,职等:
助理教授
*/
classProgram
{
staticvoidMain(string[]args)
{
Students1=newStudent("王小明","男",20,"R773122456",1);
Students2=newStudent("李小华","女",19,"R773122432",1);
Students3=newStudent("黄大虎","男",22,"R773122721",4);
Persont1=newPerson("陈福气","男",40);
Persont2=newPerson("李美女","女",35);
Person[]list={s1,s2,t1,s3,t2};
foreach(Personpinlist)
{
p.print();
Console.WriteLine();
}}}
classPerson
{
Stringname;
Stringsex;
intage;
publicPerson(Stringname,Stringsex,intage)
{
this.name=name;
this.sex=sex;
this.age=age;
}
publicvirtualPersonprint()
{
Console.Write("姓名:
"+name+"性别:
"+sex+"年龄:
"+age);
returnthis;
}}
classStudent:
Person
{
Stringid;
intdegree;
publicStudent(Stringname,Stringsex,intage,Stringid,intdegre