接下来的内容是整个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. Koa - 中间件(理解中间件、实现一个验证token中间件)

    前言 Koa 应用程序是一个包含一组中间件函数的对象,它是按照类似堆栈的方式组织和执行的. 当一个中间件调用 next() 则该函数暂停并将控制传递给定义的下一个中间件.当在下游没有更多的中间件执行后 ...

  2. NET视频教程分享

    地址:链接:https://pan.baidu.com/s/1q47WN1XFw19vLZ8XZqnB_g    提取码:8ut2  这是我收集的一套.NET学习视频教程(某智24期视频),分享出来, ...

  3. ruby 使用 rqrcode 生成二维码

    参考:  https://github.com/whomwah/rqrcode 1.  gem 'rqrcode' 2.  在helper中: require 'base64' def generat ...

  4. Vue-router的实现原理

    参考博客:https://www.jianshu.com/p/4295aec31302 参考博客:https://segmentfault.com/a/1190000015123061

  5. Python 分析电影《南方车站的聚会》

    <南方车站的聚会>由刁亦男执导,主要演员包括:胡歌.桂纶镁.廖凡.万茜等,该片于 2019 年 5 月 18 在戛纳电影节首映,2019 年 12 月 6 日在中国正式上映.故事灵感来自真 ...

  6. java基础-数据类型之殇

    一 前言 Java的数据类型分为2种,分别是基本数据类型和引用数据类型:java的数据类型是强数据类型,意味着每声明一个变量,其必定有与之对应的数据类型:面试常问的java8大基本数据类型其实是基本数 ...

  7. SSM(Spring+SpringMVC+Mybatis)框架整合

    1.数据准备 SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for `admin` -- - ...

  8. Flutter - You need to use a different version code for your APK or Android App Bundle because you already have one with version code 1.

    前两天提交了一个版本Google Play,结果今天收到拒绝的邮件,说App内购有问题. 于是把设置里面的支付宝和微信打赏功能关闭,又打了一个aab. 然后上传到Google Play,结果提示 Yo ...

  9. maven的下载、安装及配置

    一.下载maven 1. maven的下载路径 (1)Apache官网:https://maven.apache.org (2)https://pan.baidu.com/s/1Yvv44ICGSxG ...

  10. spark-3.0 application 调度算法解析

    spark 各个版本的application 调度算法还是有这明显的不同之处的.从spark1.3.0 到 spark 1.6.1.spark2.0 到 现在最新的spark 3.0 ,调度算法有了一 ...