前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >程序设计语言介绍及调试技巧

程序设计语言介绍及调试技巧

作者头像
全栈工程师修炼指南
发布2020-10-23 16:25:04
6390
发布2020-10-23 16:25:04
举报

[TOC]

快速入门

什么是计算机程序? 答:所谓的程序就是计算机能识别和执行的指令,每一条指令使计算机执行特定的操作,程序和指令是计算机系统中最基本的概念。

什么是计算机语言? 答:一种人类与计算机都能识别的语言。

1)机器语言 机器指令(Machine instruction):计算机能直接识别和接受的二进制代码 机器语言(Machine Language):机器指令的集合 通过指令表,CPU 能将 0 和 1 的组合跟具体的指令挂钩,那么这些 0 和 1 的组合我们称之为机器码,属于第一代编程语言,也是 CPU 唯一可以直接读得懂的语言。

2)符号语言(Symbolic language) 由于计算机不能直接识别和执行符号语言助记符(ADD A,B == 寄存器A = A+B),需要汇编程序的软件将符号语言转成机器语言 一条符号语言对应转换一条机器指令,该过程叫”代真”或”汇编”,因此符号语言也叫符号汇编语言(Assembler Language) 缺点:通用性不行(不同型号的PC机器语言和汇编语言互不相通)

3)高级语言(High language) 20世纪50年代第一个计算机高级语言FORTRAN语言-IBM公司开发 优点:功能强,不依赖具体的机器,对任何的计算机都适用,一个高级语句往往对应多条机器指令。

比如第三代编程语言 :C 语言 C++、C#、JAVA、Delphi、Python、Object-C、Swift

高级语言的发展历程 1)非结构化的语言

  • BASIC(初学者小型会话语言)、FORTRAN/ALGOL(适合数值计算)
  • Pascal是一种传统的程序设计语言,设计的初衷是为了教学;

2)结构化的语言(面向过程)

  • QBASIC、FORTRAN 77 、C(系统描述语言)

3)面向对象的语言

  • Visual BASIC(支持面向对象程序的设计语言),C++(支持面向程序设计的大型语言),JAVA(适合网络的语言)

两种编程思想

WeiyiGeek.过程/对象
WeiyiGeek.过程/对象

WeiyiGeek.过程/对象

1)面向过程

以事件为中心的编程思想;分析出解决问题所需要的步骤;再用函数(最小单位)把这些步骤一步一步实现;使用的时候一个一个依次调用就可以了;

2)面向对象 面向对象是以功能来划分问题,而不是步骤;注重的是对象和对象的使用;只有面向对象的程序,才真正的符合人类的思维逻辑; 三大特性:封装性,继承性,多态性; 优势:可读性,可重用性,稳定性,维护性,可测试性;

程序设计语言可以分为两类:编译型语言和解释型语言

1)编译型语言 很多传统的程序设计语言,例如Fortran、Ada、Pascal、C、C++ 都是编译型语言,这类语言需要预先将我们写好的源代码(source code)转换成目标代码(object code),这个过程被称作“编译”。

  • 优点:运行程序直接读取目标代码(object code),由于编译后的目标代码(object code)非常接近计算机底层,执行效率很高。
  • 缺点:由于编译型语言多半运作于底层,所处理的是字节、整数、浮点数或是其他机器层级的对象,往往实现一个简单的功能需要大量复杂的代码。

例如:在C++里,就很难进行“将一个目录里所有的文件复制到另一个目录中”之类的简单操作。

2)解释型语言(“脚本语言”) 执行这类程序时,解释器(interpreter)需要读取我们编写的源代码(source code),并将其转换成目标代码(object code),再由计算机运行。

多数网站开发都是使用脚本语言,它是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,纯文本保存的程序(如可以用记事本打开查看、编辑)),因为脚本不仅可以减小网页的规模和提高网页浏览速度,而且可以丰富网页的表现。

  • 特点:语法和结构、 学习和使用通常比较简单  
  • 优点:它们多半运行在比编译型语言还高的层级,能够轻易处理文件与目录之类的对象,可以由应用程序临时调用并执行,最重要的就是跨平台。
  • 缺点:它们的效率通常不如编译型语言(每次执行程序都多了编译的过程),但是好处就是可以实现跨平台的特性

通常使用脚本编程还是值得的,花一个小时写成的简单脚本,同样的功能用C或C++来编写实现,可能需要两天,而且脚本执行的速度已经够快了,快到足以让人忽略它性能上的问题。

脚本编程语言:有PHP、HTML、CSS、JavaScript、VBScript、ActionScript、MAX Script、ASP、JSP、SQL、Perl、Shell、python、Ruby、JavaFX、Lua、AutoIt

WeiyiGeek.编译型-解释型
WeiyiGeek.编译型-解释型

WeiyiGeek.编译型-解释型

程序设计的任务 从确认问题到最后完成任务几个工作阶段:

  • 1)问题分析
  • 2)设计算法
  • 3)编写程序
  • 4)对源程序进行编辑、编译、连接
  • 5)运行程序分析结果
  • 6)编写程序文档

程序执行流程 大多数的程序都遵循着:输入 ->>> 处理 ->>> 输出的模型,首先接受输入数据,然后根据指定的算法进行处理,最后输出计算结果。

WeiyiGeek.执行流程
WeiyiGeek.执行流程

WeiyiGeek.执行流程

结构化程序设计方法 作用:解决人脑思维能力的局限性和被处理问题的复杂性之间的矛盾。 定义:一个结构化程序就是用计算机语言表示的结构化算法,使用三种基本结构组成的程序必然是结构化的程序。

结构化程序设计强调程序设计风格和程序结构的规范化,提倡清晰的结构采用以下方法:

  • 1)自顶而下
  • 2)逐步细化 (由抽象化为具体)
  • 3)模块化设计
  • 4)结构化编码 (将已设计好的算法用计算机语言表示)

程序设计调试技巧 程序出错可以分为两大类:编译时错误(complie-time error)运行时错误(run-time error)

  • 编译时错误: 常常会出现在您编程之中,由于语法方面的问题,大括号,小括号引用定义变量有误等等;
  • 运行时错误: 往往更难以查找和纠正,运行时错误一般都不会有正式的出错信息(程序逻辑方面的错误)。
  • (1)预防编译时候错误:
    • 建议一:培养并保持一种编程风格!
    • 建议二:认真对待编译器给出的错误/警告信息!
    • 建议三:开始写代码前先画流程图,三思而后行!
    • 建议四:注意检查最基本的语法!
    • 建议五:把可能有问题的代码行改为注释!
    • 建议六:换一个环境(系统有事会有杀软等等)或开发工具!
    • 建议七:检查自己是否已经把所有必要的头文件全部 include 进来!
    • 建议八:留意变量的作用域和命名空间!
    • 建议九:多多使用调试工具!
  • (2)预防运行时错误
    • 经验一:还是培养并保持一种良好的编程风格!
    • 经验二:多用注释,用好注释。
    • 经验三:注意操作符的优先级,流程图;(建议使用括号来控制优先级)!
    • 经验四:千万不要忘记对用户输入和文件输入进行合法性检查!
    • 经验五:不要做任何假设;
    • 经验六:把程序划分成一些比较小的单元模块来测试!

程序设计标准化 文件注释:

代码语言:javascript
复制
标题: merglist.c 
功能: 归并两个有序表.
说明:归并两个数据元素按非递减有序排列的线性表palist和pbli t bli
当前版本: x.x
修改信息: 2004 08 05 Anni 2004.08.05 Anni, Initial Version Initial Version2004.08.20 Tom, Bug xxxx fixed

函数注释:

代码语言:javascript
复制
函数功能:在在list所指顺序表中删除下标为 
函数格式:int delete_seq(PSeqList palist,int p)
函数参数:Param1:PseqList类型对象 输入框架 ,Parma2: 整形无符号,记录次数
返回值: TRUE正常, FALSE错误

功能性注释:

代码语言:javascript
复制
//每个变量作用简要说明
//将每月的销售额amount加到年销售额total中
total = amount + total;
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-10-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 快速入门
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档