君子远庖厨,万物皆备于我。—孟子

这篇文章主要总结程序的主要要素,以及程序的构成是什么样子的。最后说说我学到的一种奇特的表示算法的方式—伪代码。

让我们开始吧!

一个程序应该包括以下两个主要要素:

1.对数据的描述。在程序中要指定数据的类型和数据的组织形式,即为数据结构。

2.对操作的描述。即为操作步骤,也就是算法。

那么程序是什么呢?

程序=算法+数据结构+程序设计方法+语言工具和环境[1]

最后来说说被忽略的伪代码。伪代码不同于汇编语言中的伪指令。

伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。它如同一篇文章一样,自上而下地写下来。每一行(或几行)表示一个基本操作。它不用图形符号,因此书写方便、格式紧凑、易懂,也便于向计算机语言算法(即程序)过渡。伪代码是指对程序设计语言的精简的、非正式的描述,目的是便于人们的阅读和理解,而不是用于计算机的执行。

举一个简单的例子来简要对伪代码表示的算法进行说明。比如设计一个算法,当一个数x>5的时候就将它打印出来,用伪代码可以如下表示。

可以用中文表示

如果 x大于5
  将x的值打印出来
  否则
  打印出一句话"x的值不大于5"

也可以用英文表示

if x is greater than 5 then
  print  x  !在FORTRAN中,print表示输出
  else
  print "the value of x is less than 5"

从上面可以看出,用伪代码表示的算法利于书写和阅读,即使是没有太高计算机基础的人也可以轻松地读懂一段代码。

所以,伪代码像是我们说话的方言而已,没有固定的、严格的语法规则,只要把意思表达清楚且书写的格式清晰易读即可。但是还是有些相同的微带关键词,其中微带关键词就是各地伪代码久而久之产生的一些约定俗成的关键词。可以遵守,也可以不遵守。

微带关键词我只提供链接,大家可以去学习。

链接如下:

https://blog.csdn.net/zwqjoy1/article/details/78689115

参考文献:

[1]谭浩强.C程序设计(第四版)[J].计算机教育,2010(20):114.

注:这些知识是我看过很多博客和相关资料整理来的。但由于没有及时记录博客IP地址,所以请相关博主看到我的整理后,若感觉这篇文章的有些内容和自己的博文有相似之处,请私信我。我一定会标明出处。

C语言再学习part3—算法的更多相关文章

  1. C语言再学习part1-宏观认识C语言

    天下莫柔弱于水,而攻坚强者莫之能胜,以其无以易之也.弱之胜强,柔之胜刚,天下莫不知行,莫能行. —老子 我近来每天都在坚持读书,所以我一直沉浸于古人的智慧中无法自拔.所以如果我这篇博文被你有幸看到,那 ...

  2. C语言再学习之内存对齐

    昨天看Q3的代码,看到有个_INTSAIZEOF的宏,着实晕了一阵.一番google后,终于明白,这个宏的作用是求出变量占用内存空间的大小,先看看_INTSAIZEOF的定义吧: #define _I ...

  3. C语言再学习之 setjmp与longjmp

    前不久在阅读Quake3源代码的时候,看到一个陌生的函数:setjmp,一番google和查询后,觉得有必要针对setjmp和longjmp这对函数写一篇blog,总结一下. setjmp和longj ...

  4. C语言再学习part2-重新认识C语言词汇

    迷阳迷阳,无伤吾行.无行郗曲,无伤吾足.—庄子 C语言词汇: 标识符 在程序中的变量名.函数名.标号等等成为标识符.其中标识符相在C中只能是字母A~Z,a~z,数字0~9,下划线(_)组成的字符串,并 ...

  5. 01_c语言再学习_基础部分(1)

    目录: 1.编译基础 2.c语言关键字 3.c语言数据类型 4.二进制/8进制/16进制 5.计算机内存数值存储方式:sizeof/原码/反码/补码 6.c语言中的字符和字符串 7.c语言中的数组和字 ...

  6. MQTT再学习 -- MQTT 客户端源码分析

    MQTT 源码分析,搜索了一下发现网络上讲的很少,多是逍遥子的那几篇. 参看:逍遥子_mosquitto源码分析系列 参看:MQTT libmosquitto源码分析 参看:Mosquitto学习笔记 ...

  7. FFmpeg再学习 -- SDL 环境搭建和视频显示

    继续看雷霄骅的 课程资料 - 基于FFmpeg+SDL的视频播放器的制作 一.SDL 简介 参看:WIKI -- Simple DirectMedia Layer 参看:最简单的视音频播放示例9:SD ...

  8. 大数据技术之_16_Scala学习_13_Scala语言的数据结构和算法_Scala学习之旅收官之作

    第十九章 Scala语言的数据结构和算法19.1 数据结构(算法)的介绍19.2 看几个实际编程中遇到的问题19.2.1 一个五子棋程序19.2.2 约瑟夫问题(丢手帕问题)19.2.3 其它常见算法 ...

  9. C语言课程学习的总结

    C语言课程学习的总结 学习C程序这门课一年了,这是我们学的第一门专业课.在大学里,C语言不但是计算机专业的必修课程而且也是非计算机专业学习计算机基础的一门必修课程.所以作为我这个计算机专业的学生来说当 ...

随机推荐

  1. PKU-2723 Get Luffy Out(2-SAT+二分)

    Get Luffy Out 题目链接 Ratish is a young man who always dreams of being a hero. One day his friend Luffy ...

  2. Realm及相关对象(四)

    Shiro Realm 1.UserRealm 父类 AuthorizingRealm 将获取 Subject 相关信息分成两步:获取身份验证信息(doGetAuthenticationInfo)及授 ...

  3. Docker Mysql部署与使用

    参考链接:Docker 安装 Mysql 详解

  4. vue-particles做背景,鼠标动画粒子连线填坑(按钮没有点击响应)

    为了提高页面展示效果,登录界面内容比较单一的,粒子效果作为背景经常使用到,vue工程中利用vue-particles可以很简单的实现页面的粒子背景效果. 解决问题: 以背景方式显示 无法获取按钮焦点, ...

  5. webpack入门系列2

    前面介绍了使用webpack做最基础的打包,接下来讲讲webpack的进阶. 1.使用 webpack 构建本地服务器: 想不想让你的浏览器监听你的代码的修改,并自动刷新显示修改后的结果,其实Webp ...

  6. LoadRunner随机数

    需求:自定义随机数 方法: int randomnumber; randomnumber = rand()%+; //100到300的随机数 lr_output_message("ca:%d ...

  7. 好机会,我要帮女同事解决Maven冲突问题

    任何一个故事起因最重要 任何一个职业,女生都有绝对的优势.更别提IT行业了,在部门中要是有女程序猿那肯定是香饽饽,备受呵护呀. 之前有一次,一位刚来的妹子遇到问题了,画风顿时就变成上面的图片了,群起而 ...

  8. Android 之采用execSQL和rawQuery方法完成数据的添删改查操作

    使用 SQLiteDatabase 操作 SQLite 数据库 [java] view plaincopy /* Android提供了一个名为SQLiteDatabase的类,该类封装了一些操作数据库 ...

  9. NLP新秀 - Bert

    目录 什么是Bert Bert能干什么? Bert和TensorFlow的关系 BERT的原理 Bert相关工具和服务 Bert的局限性和对应的解决方案 沉舟侧畔千帆过, 病树前头万木春. 今天介绍的 ...

  10. sqlserver datatime value plus random number

    If we want to make some identiity value in sqlserver , we can use identity data type in a table.Howe ...