接下来的内容是整个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. Java并发编程杂记(1)

    高并发: cpu -- 缓存 -- 内存 资源利用率 公平性 便利性   生活举例 --- 串行任务中的异步性:我在烧水的时候看书 --- 平衡点   安全性问题 --- 产生竞态条件 共享数据 -- ...

  2. CSS去除input和textarea点击选中框

    1.去除chrome等浏览器默认发光边框 input:focus, textarea:focus { outline: none; } 这样textarea在选中的时候,文字会有点移动,解决方法: i ...

  3. 导入做好的java项目出现下面的错误:The project cannot be built until build path errors are resolved

    例子:       作者在eclipse中导入一个新的项目时,出现了三个错误,如图1中所示: 图1 3 errors 原因分析:        在这个工程中,作者在写的时候,在build path中添 ...

  4. 【Java Web开发学习】Spring MVC 使用HTTP信息转换器

    [Java Web开发学习]Spring MVC 使用HTTP信息转换器 转载:https://www.cnblogs.com/yangchongxing/p/10186429.html @Respo ...

  5. Android Studio 中java 文件报错红色J

    用常用的方法清除Android Studio的缓存然后重启,"File" -> "Invalidate Cashes / Restart" -> & ...

  6. git 知识,适合新手 滤清思路

    1,密钥 (公钥和私钥) @ 公钥放在服务器上(说白了这里的服务器就是远程仓库, 就是谁建立的远程仓库这个公钥就放在他的ssh设置那) @ 私钥 放在本地就行,不用动,就是你生产密钥的.ssh 文件里 ...

  7. Nginx入门简介和反向代理、负载均衡、动静分离理解

    场景 Nginx简介 Nginx ("engine x")是一个高性能的 HTTP 和反向代理服务器 特点是占有内存少,并发能力强,事实上 nginx 的并发能力确实在同类型的网页 ...

  8. GeoSpark入门-可视化

        GeoSpark是一种用于大规模空间数据处理的集群计算. GeoSpark通过一组out-of-the-box空间弹性分布式数据集( SRDDs ) 扩展 Apache Spark,它可以跨机 ...

  9. Mac 安装nginx之后重启、停止、开启等操作

    操作系统:macOs High Sierra 10.13.6 1.我用的homebrew安装的nignx1.15.9,安装完成之后会有下面的提示: 网站根目录在:/usr/local/var/www ...

  10. 数据结构学习--单链表(python)

    概念 链表(linked_list)是物理存储单元上非连续的.非顺序的存储结构,数据元素的逻辑顺序 是通过链表的指针地址实现,每个元素包含两个结点,一个是存储元素的数据域 (内存空间) ,另一个是指向 ...