接下来的内容是整个C#学习的脉络,它将各个知识点串联了起来,是整个C#的重点,所以篇幅较长。

首先,我们类比一下PLC和C#执行代码的方式,其实不难发现都是顺序扫描,以Main为程序入口,从上到下一行一行执行。这属于顺序结构。下面我们看看已下几种结构

(1)分支结构:if if-else

(2)选择结构:if-else-if  switch-case

(3)循环结构:while do-while for foreach

首先先分享分支结构的用法

if语句

语法:

if(判断条件)

{

要执行的代码;

}

判断条件:一般为关系表达式或者bool类型的值。

执行过程:程序运行到if处,首先判断判断条件,若为true则执行{}中的程序,如果返回false,则继续向下执行。

即先判断在执行。

if else语句

语法:

if(判断条件)

{

执行代码1;

}

else

{

执行代码2;

}

执行过程:程序执行到if处,首先判断判断条件是否诚意,返回true,则执行代码1,否则执行代码2。用于两种情况的判断。

注意:else永远和离他最近的那个if配对。

这里我们还要去提到一个if-else的一个简化版用法,若语法条件不是很复杂可以这样使用:

(表达式)?(result1):(result2)

if else-if语句

作用:用来处理多条件的区间的判断。

语法:

if(判断条件1)

{

要执行的语句1;

}

else if(判断条件2)

{

要执行的语句2;

}

else if(判断条件3)

{

要执行的语句3;

}

else

{

要执行的语句4;

}

.....

执行过程:程序首先判断判断条件1,条件成立,执行语句1,否则执行判断条件2,成立跳出,否则继续执行语句3.如果都不成立则执行最后else语句。(else语句可以省略)

所以总结一下:if处理一种情况,if-else处理两种情况,if else-if处理多种情况。


try-catch异常捕获

问题引出:语法上没有错误,在程序运行过程当中,由于某些原因程序出现了错误,不能在正常的运行。

下面我们看一段代码:

 Console.WriteLine("请输入一个数字");
int number = Convert.ToInt32(Console.ReadLine()); Console.WriteLine(number*);
Console.ReadKey();

我们正常输入int类型数字时,是没有问题的,但是我们呢要是输入类似“123ab”这样的数字,系统就会抛异常,程序停止运行。这时,

若想你的程序变得坚强,就会用到try-catch进行异常捕获。

就是哪里可能会出问题就将他try起来。

语法:

try

{

可能会出现异常的代码;

}

catch

{

出现异常后要执行的代码;

}

执行过程:如果try中的代码没有出现异常,那么catch中的代码就不会执行。

更改后的代码如下:

 int number = ;
Console.WriteLine("请输入一个数字");
try
{
int number = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(number*);
}
catch
{
Console.WriteLine("输入的内容不能转换成数字");
}
Console.ReadKey();

这里要注意变量的作用域,变量的作用域就是你能使用到这个变量的范围,一般是从声明他的那个括号开始到那个括号对应的括号结束。

注意:try-catch之间不允许有代码,要紧密相连。

下面看这样一个练习:

李四的年终工作评定,若为A,工资涨500,为B,工资涨200,为C工资不变,若为D工资降200,若为E,工资降500.原工资为5000

要求输入李四评级,然后显示李四来年的工资。

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace 草稿
{
class Program
{
static void Main(string[] args)
{
double salary = ;
Console.WriteLine("请输入对李四的年终评定");
string level = Console.ReadLine();
if (level=="A")
{
salary += ;
}
else if (level=="B")
{
salary += ;
}
else if (level == "C")
{
salary += ;
}
else if (level == "D")
{
salary -= ;
}
else if (level == "E")
{
salary -= ;
}
else
{
Console.WriteLine("输入有误程序退出");
}
Console.WriteLine("李四来年的工资是{0}",salary);
Console.ReadKey();
}
}
}

但是以上代码会有问题,就是当你输入的为ABCDE以外的字母时,会发生一下问题:

也就是在执行完else代码后 最后的Console.WriteLine("李四来年的工资是{0}",salary);不应该输出为了解决这个问题,我们可以用以下方法解决。也就是用一个标志位。

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace 草稿
{
class Program
{
static void Main(string[] args)
{
bool b = true;
double salary = ;
Console.WriteLine("请输入对李四的年终评定");
string level = Console.ReadLine();
if (level=="A")
{
salary += ;
}
else if (level=="B")
{
salary += ;
}
else if (level == "C")
{
salary += ;
}
else if (level == "D")
{
salary -= ;
}
else if (level == "E")
{
salary -= ;
}
else
{
Console.WriteLine("输入有误程序退出");
b = false;
}
if (b)
{
Console.WriteLine("李四来年的工资是{0}", salary);
} Console.ReadKey();
}
}
}

C#的语法----程序结构(1)的更多相关文章

  1. C#的语法----程序结构(2)

    接下来我们继续学习程序流程控制的语法! switch-case 用来处理多条件的定值的判断. 语法: switch(变量或者表达式的值) { case value1:要执行的代码1: break; c ...

  2. C#的语法----程序结构(3)

    练习2 对于学员成绩的评测  成绩>=90:A  成绩>=80&&成绩<90:B  成绩>=70&&成绩<80:C  成绩>=60& ...

  3. Python学习笔记(Ⅰ)——Python程序结构与基础语法

    作为微软的粉丝,最后终于向Python低头了,拖了两三个月终于下定决心学习Python了.不过由于之前受到C/C#等语言影响的思维定式,前期有些东西理解起来还是很费了些功夫的. 零.先抄书: 1.Py ...

  4. C#程序结构与基本语法

    C# 程序结构 Hello World 实例 一个 C# 程序主要包括以下部分: 命名空间声明(Namespace declaration) 一个 class Class 方法 Class 属性 一个 ...

  5. 【第三篇】SAP ABAP7.5x新语法之程序结构&SubScreen

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文地址:SAP ABAP7.5x系列之程序结构& ...

  6. C++程序结构---1

    C++ 基础教程Beta 版 原作:Juan Soulié 翻译:Jing Xu (aqua) 英文原版 本教程根据Juan Soulie的英文版C++教程翻译并改编. 本版为最新校对版,尚未定稿.如 ...

  7. Verilog HDL的程序结构及其描述

    这篇博文是写给要入门Verilog HDL及其初学者的,也算是我对Verilog  HDL学习的一个总结,主要是Verilog HDL的程序结构及其描述,如果有错,欢迎评论指出. 一.Verilog ...

  8. GO语言的进阶之路-go的程序结构以及包简介

    GO语言的进阶之路-go的程序结构以及包简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.编辑,编译和运行 A,编辑 Go程序使用UTF-8编码的纯Unicode文本编写.大 ...

  9. 标记化结构初始化语法 在结构体成员前加上小数点 如 “.open .write .close ”C99编译器 .

    今天在看串口驱动(四)的时候 有这样一个结构体初始化 我很不理解 如下: static struct s3c24xx_uart_port s3c24xx_serial_ports[NR_PORTS] ...

随机推荐

  1. rsync服务的讲解

    第2章 rsync备份服务器的搭建 2.1 rsync备份服务器的概念 2.1.1 概念 rsync服务器对网站服务器数据进行备份(防止数据丢失和数据进行恢复) rsync服务器对网站服务器数据进行对 ...

  2. 基于python的种子搜索网站(三)项目部署

    项目部署过程 系统要求:ubuntu 16.04(或以上) 环境搭建和配置,必须严格按照以下步骤来安装部署!如有问题可以咨询(weixin:java2048) 安装部分 安装nginx sudo ap ...

  3. Matlab Robotics Toolbox 仿真计算:Kinematics, Dynamics, Trajectory Generation

    1. 理论知识 理论知识请参考: 机器人学导论++(原书第3版)_(美)HLHN+J.CRAIG著++贠超等译 机器人学课程讲义(丁烨) 机器人学课程讲义(赵言正) 2. Matlab Robotic ...

  4. 什么是cookie?什么是session?session和cookie有什么区别?

    在技术面试中,经常被问到“说说Cookie和Session的区别”,大家都知道,Session是存储在服务器端的,Cookie是存储在客户端的,然而如果让你更详细地说明,你能说出几点?今天个推君就和大 ...

  5. [ASP.NET Core 3框架揭秘] 配置[4]:将配置绑定为对象

    虽然应用程序可以直接利用通过IConfigurationBuilder对象创建的IConfiguration对象来提取配置数据,但是我们更倾向于将其转换成一个POCO对象,以面向对象的方式来使用配置, ...

  6. C# -- DateTime与TimeSpan

    1. DateTime的使用 DateTime dt = DateTime.Now; StringBuilder sb = new StringBuilder(); sb.AppendLine(str ...

  7. Support URL

    如您有任何疑问或者建议,请通过以下方式与我们取得联系,我们会尽快响应您的反馈: 邮箱:eighteyes_cn@163.com

  8. C#开发微信小程序(五)

    导航:C#开发微信小程序系列 关于小程序项目结构,框架介绍,组件说明等,请查看微信小程序官方文档,关于以下贴出来的代码部分我只是截取了一些片段,方便说明问题,如果需要查看完整源代码,可以在我的项目库中 ...

  9. C语言笔记 06_作用域&数组

    作用域 任何一种编程中,作用域是程序中定义的变量所存在的区域,超过该区域变量就不能被访问.C 语言中有三个地方可以声明变量: 在函数或块内部的局部变量 在所有函数外部的全局变量 在形式参数的函数参数定 ...

  10. 在 .NET Core 3.0 中支持 Newtonsoft.Json 的使用

    .NET Core 3.0 已经使用了一整套内置的 Josn 序列化/反序列化方案,而且看上去效率还不错.但对于某些项目必须使用到 Newtonsoft.Json 的时候,就会抛出如下异常: Syst ...