---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO开发S</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
我的入学笔记,当我看到黑马要求我们写学习笔记时,我也想过要写牛一些的笔记,但随着我不断的学习,我觉得黑马的用意,应该是让我们养成写笔记做总结的一个习惯,其实写总结是我们很好的复习的一个过程,加强了我们所学习的东西.作为程序员,我觉得最重要的应该是我们所敲的代码,那些概念性的东西很重要,但我们毕竟不用出书,所以我把笔记与程序相结合,一些比较重要的东西我写在了注释中,下面是我的第一篇笔记:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;//这里是调用了命名空间,以后需要进一步的学习
namespace _01基础知识_往往是最重要的_//定义命名空间 空间名不能以数字开头
{
class Program//定义了一个类
{
static void Main(string[] args)//定义一个main方法(是程序的入口接口)
{
关于C#.net
/* .net(dotnet)一般指.NetFremework框架,是一种平台
C#(sharp)是基于这种平台的一种编程语言,.net上可以用其他编程语言进行编程
另外现今的Java也是比较流行的一种语言,它只基于Java平台
.net能够开发1.桌面应用程序 Winform 2.Internet应用程序ASP.net 3.移动平台wp7
客户机/服务器模式 Clinet/Server 浏览器/服务器模式 Browser/Server
IDE 集成开发环境 (Integrated Development)就是VS */
/* 解决方案包含多个项目,项目中包括多个类,类中包括多个程序块*/
1, #region语言的基本框架了解
/* C++.net C#.net F# 等编程语言 第一层
* .NetFramework 类库(FCL) 第二层
* 公共语言运行库(CLR) 第三层
* 微软操作系统 第四层
* 概念性的东西很重要,最后的真正软件开发,也更容易理解 */
#endregion
#region一些输出
Console.WriteLine("Hello! Word.");
Console.Write("I can do");
Console.Write(" it!\n\n");//console.write不换行
Console.WriteLine("追影,加油!黑马,等着我。NO.1\n");
Console.WriteLine("*******************************");
Console.WriteLine("* 这是新的开始 *");
Console.WriteLine("*******************************\n");
#endregion
2, #region变量的定义
int number = 24;
double PI = 3.14;
char sex = '男';//支持中文
string name = "绝影";
name = "追影";//可以重复赋值
decimal money = 1000.50M;//M用来特指decimal类型
string zsName = "张三", lsName = "李四";/区分大小写
int zsAge = 23, lsAge = 25;//变量没有使用过,会有警告,不影响程序的运行,只是资源的浪费
/*变量有它独到的命名方法,便于理解变量的意义
* 匈牙利命名法 strName intNumber,前半部是变量类型
* SystemNumber 每个单词开头都大写,一般用于全局变量或类名
* zsName lsName 骆驼命名法,中文与英文相结合
* PI 简称全用大写,一般用在全局变量 */
#endregion
3, #region +号符和站位符的应用
//这是有关输出方面的格式
Console.WriteLine(zsName + "和" + lsName);
Console.WriteLine("他们的年龄分别是" + zsAge + "," + lsAge);
Console.WriteLine("\n使用占位符:number={0},PI={1},sex是{3},name是{2}",
number, PI, name, sex, money);//变量可以是不同类,占位符很好用
//占位符与加号符的想结合,最后的输出是:我叫追影,今年24,我有1000.5
Console.WriteLine("{0},{1},我有" + money, "我叫" + name, "今年" + number);
#endregion
4, #region 简单的交换
int a = 10, b = 3, temp;
temp = b; b = a; a = temp;//或者是 t=a,a=b,b=t
Console.WriteLine("\na和b进行了交换 a={0},b={1}", a, b);
#endregion
5, #region 输入符和转义符
Console.Write("\n你的目标是什么:");
string input= Console.ReadLine();
Console.WriteLine("\n吊\b很好,\"{0}\"是个不错的目标",input);//\b表示退一格
Console.WriteLine("\n\\1\t2\t3\t4\t5");
Console.WriteLine("\\11\t222\t333\t444\t555\n"); //\n \b \t制表符很好用 开头对齐
Console.WriteLine(@"我的存储位置是""D:\visual studio 2010\Projects\备战黑马第一天""");
//@符号在前取消/的功能 可以用“”代替一个“
#endregion
6, #region 练习+ - * / % 算数运算符
int oneNumber = 10, twoNumber = 20;
int sumNumber = oneNumber + twoNumber;
int r = 5;
double sYuan = r * r * PI;
int tshirtPrice = 35, trousersPrice = 120;
int sumPrice = tshirtPrice * 3 + trousersPrice * 2;
int zsumPrice = (int)(sumPrice * 0.88);//这里用到强制转换(不是什么都可以强制转换)
Console.WriteLine("\n圆的面积等于" + sYuan);
Console.WriteLine("oneNumber+twoNumber=" + sumNumber);
Console.WriteLine("总价是{0},打完8.8折后是{1}", sumPrice, zsumPrice);
#endregion
7, #region自动/强制转换及初次了解Convert.ToInt32()
/* 类型的自动转换 必须是在不失去精度的情况下
* 类型必须兼容
* double可以转向int int不能转向double
* int=int*double(可以)double=int*int(不可以),字符串是不能强制转换的
* 转换遵循由大往小转换的规则 */
a = 10; b = 3;
double mod = a / b;//它的值不是3.3333,而是3.应该注意,a和b的类型一致,所以必然是int类型
//解决方案 double mod = a /(b*1.0)
int intPI = (int)(PI);
double doublePI = (double)(money);//double转换符
Console.WriteLine("\nmod的值其实是" + mod);
Console.WriteLine("强制转换PI为int类型" + intPI);
Console.WriteLine("强制转换money为double类型" + doublePI);//这里都转换成功了,遵循了由大往小
string inAge = "24";//这里是字符串
int intAge = Convert.ToInt32(inAge);//初次用到了调用了类的方法,以后会更多的接触
int nowAge = 2013 - intAge;
Console.WriteLine("\n我出生的年份是" + nowAge);
//Convert.ToString 把任何类型转换成字符串
string strAge = Convert.ToString(intAge);
Console.WriteLine("将任何类型转换成字符串" + strAge);
#endregion
8, #region 练习2 /符与取余符%的利用。第一题的输入输出,通过以后的学习可以进一步的完善。
//第一题 输入输出 求总值平均值 主要是字符串转换成数值
Console.Write("\n你好!请输入你的姓名:");
string nameYou = Console.ReadLine();
try
{
Console.Write("你的语文成绩是多少:");
int chinese = Convert.ToInt32(Console.ReadLine());
Console.Write("你的数学成绩是多收:");
int math = Convert.ToInt32(Console.ReadLine());
int sumChenji = chinese + math;
double pinJun = 1.0 * sumChenji / 2
Console.WriteLine("{0}你好,你的总成绩是{1},平均分是{2}", nameYou, sumChenji, pinJun);
}
catch
{
Console.Write("你的语文成绩是多少:");
int chinese = Convert.ToInt32(Console.ReadLine());
Console.Write("你的数学成绩是多收:");
int math = Convert.ToInt32(Console.ReadLine());
int sumChenji = chinese + math;
double pinJun = 1.0 * sumChenji / 2;\
Console.WriteLine("{0}你好,你的总成绩是{1},平均分是{2}", nameYou, sumChenji, pinJun);
}
//通过以后的学习 进一步完善 输入输出,还有关于try/catch
int zhou = 46;
int zhouShu = zhou / 7;
int tianShu = zhou % 7;
Console.WriteLine("\n{0}天是{1}周零{2}天", zhou, zhouShu, tianShu);
int miao = 107653;
int fen = miao / 60;
int miaoZ = miao % 60;
int shi = fen / 60;
int fenZ = fen % 60;
int tian = shi / 24;
int shiZ = shi % 24;
Console.WriteLine("{0}秒合为{1}天,{2}小时,{3}分钟,{4}秒", miao, tian, shiZ, fenZ, miaoZ);
#endregion
9, #region 一元表达式++ +=等 一元有更高的效率,逻辑思路是重点
//一元在循环中的利用(很好用)
int Age = 24;
int sumO = Age++ - 4;//这里注意后加还没加,在表达式后才自加
Console.WriteLine("\nAge++后的值是{0},但sumO的值是{1}", Age, sumO);
//初次涉及关系运算符( < >,<=,>=,!=,==)及布尔类型ture,fasle(布尔类型的申明,bool a)
bool t = Age > sumO;
bool f = Age < sumO;
Console.WriteLine("当24大于20时是{0},当小于时是{1}", t, f);
/* 逻辑运算符 && || ! 与/或/非
* 与 真真为真 真假为假 假真为假 假假为假
* 或 真真为真 真假为真 假真为真 假假为假
* 非 非真为假 非假为真 */
Console.Write("输入你的语文成绩:");
int yuWen = Convert.ToInt32(Console.ReadLine());
Console.Write("输入你的数学成绩:");
int shuXue = Convert.ToInt32(Console.ReadLine());
bool t1 = yuWen > 90 && shuXue > 90;
bool t2 = yuWen > 100 || shuXue > 100 || (yuWen > 90 && shuXue > 90);
Console.WriteLine("当两门都大于90是为{0},当有一门大于100也为{1}", t1, t2);
// 如何分辨瑞年,以后可以写在类的方法中,方便调用
Console.WriteLine("\n请输入一个年份:");
int year1 = Convert.ToInt32(Console.ReadLine());
bool ruiYear = (year1 % 400 == 0) || ((year1 % 4 == 0) && (year1 % 100 != 0));
Console.WriteLine("你输入的年份{0}是瑞年吗:It's {1}", year1, ruiYear);
/* 逻辑思路问题有意思但要分清楚,逻辑与:当第一个条件为假时后一个条件并没有执行
逻辑或:当第一个条件为真的时候后一个条件并没有执行 */
int y = 10, x = 5;
bool z = ++y > 20 && ++x > 2;
Console.WriteLine("\ny自加后是{0},但x并没有执行所以是{1}", y, x);
bool v = ++y > 9 || ++x > 2;
Console.WriteLine("同理 y自加后是{0},但x并没有执行所以还是{1}", y, x);
#endregion
10, #region 判断语句if if/else 及嵌套 和if elseif else
Age = 28;
if (Age > 29)
{
Console.WriteLine("\n成立");
Console.WriteLine("再成立");
}
else
{ Console.WriteLine("\n不成立"); }//不加大括号 默认只运行第一句话
// if else 可以进行嵌套
// if elseif else 更加便于理解
int ife = 30;
if (ife > 80)
Console.WriteLine("ife>80");
else if (ife > 60)
Console.WriteLine("ife>60");
else if (ife > 30)
Console.WriteLine("ife>30");
else
Console.WriteLine("ife<=30");
if (ife > 60)
Console.WriteLine("ife>50");
else //在else中嵌套
{
if (ife > 50)
Console.WriteLine("ife>50");
else
Console.WriteLine("ife<50");
}
#endregion
11, #region 判断语句的练习,以后利用循环进行改进
Console.WriteLine("请输入密码:");
if (Console.ReadLine() == "888888")
Console.WriteLine("密码正确,登陆成功");
else
{
Console.WriteLine("请重新输入密码:");
if (Console.ReadLine() == "888888")
Console.WriteLine("密码正确,登陆成功");
else
Console.WriteLine("密码输入有误");
}
Console.WriteLine("\n请输入用户名:");//利用循环次数可以让用户有几次的输入机会,直到输入正确
string yongHu = Console.ReadLine();//利用循环、选择,输入用户名正确后再输入密码,两个条件都满足后登陆
Console.WriteLine("请输入密码"); // 有待改进
string miMa = Console.ReadLine();
if (yongHu == "admin" && miMa == "888888")
Console.WriteLine("输入正确");
else if (yongHu != "dimin")
Console.WriteLine("用户名不正确");
else
Console.WriteLine("密码不正确");
Console.WriteLine("\n请输入你的年龄");
int yAge = Convert.ToInt32(Console.ReadLine());
if (yAge > 18)
Console.WriteLine("可以查看");
else if (yAge >= 10)
{
Console.WriteLine("你可以查看,请输入Yes或No");
if (Console.ReadLine() == "Yes")
Console.WriteLine("可以查看");
else if (Console.ReadLine() == "No")
Console.WriteLine("退出,你放弃查看");
}
else
Console.WriteLine("不允许查看");
#endregion
12, #region switch/case 的使用(小技巧,标签 flag=true)
Console.WriteLine("\n请输入李四的年终评定:(A--E)之间");
input =Console.ReadLine();
bool flag = true;//小技巧 标签 flag=true 如果经过一个语句flag=false 表示运行了这条语句
//则下边的一条语句是否执行看前一个是否运行过 条件为if(flag=true)
int gongZi=5000;
switch(input)
{ case "A":
gongZi+=500;
break;
case "B":
gongZi+=200;
break;
case "C":
break;
case "D":
gongZi-=200;
break;
default:
Console.WriteLine("你的输入有误");
flag=false;
break;
case "F":
gongZi-=500;
break;
}
if (flag==true)
Console.WriteLine("你的工资是"+gongZi);
#endregion
13, #region 输入年份月份,得到那个月的天数,以后可以封装成方法
Console.WriteLine("\n请输入年份:");
int intNian = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("请输入月份:");
int intYue = Convert.ToInt32(Console.ReadLine());
switch (intYue)//括号中也可以是个表达式
{
case 4:
case 6:
case 8:
case 10:
case 12:
Console.WriteLine("{0}年{1}月有31天", intNian, intYue);
break;
case 2:
if (intNian % 400 == 0 || intNian % 4 == 0 && intNian % 100 != 0)
Console.WriteLine("{0}年{1}月有29天", intNian, intYue);
else
Console.WriteLine("{0}年{1}月有28天", intNian, intYue);
break;
default:
Console.WriteLine("{0}年{1}月有30天", intNian, intYue);
break;
}
#endregion
Console.ReadKey();
}
}
}
我没有写太多的注释,因为之前有学过C语言,过程性的东西还比较了解,学习才刚刚开始,后面的才是重点,努力中.
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO开发S</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------