C语言再学习part3—算法

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

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

让我们开始吧!

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

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地址,所以请相关博主看到我的整理后,若感觉这篇文章的有些内容和自己的博文有相似之处,请私信我。我一定会标明出处。

原文地址:https://www.cnblogs.com/liuchengdeboke/p/12334899.html

时间: 2024-10-11 07:28:31

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

C语言再学习之 setjmp与longjmp

前不久在阅读Quake3源代码的时候,看到一个陌生的函数:setjmp,一番google和查询后,觉得有必要针对setjmp和longjmp这对函数写一篇blog,总结一下. setjmp和longjmp是C语言独有的,只有将它们结合起来使用,才能达到程序控制流有效转移的目的,按照程序员的预先设计的意图,去实现对程序中可能出现的异常进行集中处理. 先来看一下这两个函数的定义吧: setjmp和longjmp的函数原型在setjmp.h中 函数原型: int setjmp(jmp_buf envb

C语言再学习之内存对齐

昨天看Q3的代码,看到有个_INTSAIZEOF的宏,着实晕了一阵.一番google后,终于明白,这个宏的作用是求出变量占用内存空间的大小,先看看_INTSAIZEOF的定义吧: #define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) ) (ANSI C标准下,_INTSAIZEOF宏定义在stdarg.h中,Q3中定义在bg_lib.h中:bg_lib.h -- standard C library

C语言再学习——数据类型

C语言数据类型 原码:最高位表示符号位:0表示+,1表示-: [+1]原 = 0000 0001 [-1]原 = 1000 0001 反码: 反码转反码:对反码再一次求反码 正数的反码是其本身: 负数的反码是其原码的基础上,符号位不变,其他位各个取反. [+1] = [00000001]原 = [00000001]反 [-1] = [10000001]原 = [11111110]反 补码: 补码转原码: 对补码再一次求补码 正数的补码是其本身: 负数的补码是在其原码的基础上, 符号位不变, 其余

C语言再学习——数组

1.数组名:地址常量(不能自增,赋值等操作): 2.数组中的元素指的都是变量.可以被赋值. 3.数组长度:数组中元素的个数. 4.数据类型:决定了每一个数组元素占用的内存空间大小. 5.数组占用内存空间大小 = size0f(a[0])*length;    (length:数组长度) 内存不能越界访问,对数组的访问不能超过对应数组的长度. 定义变量时一定记住要初始化,由于未初始化可能会对后续的程序产生不良影响,往往这样的错误很难找,所以需要养成变量初始化的习惯. 如非声明,则为原创 糊涂猫un

C语言再学习——C语言中进制之间的转换

十进制转换为二进制:利用除二取余倒序法 二进制转换为十进制:利用每位二进制数对应的幂乘积. 例如:110 = 1*2^2+1*2^1+0*2^0 十六进制和十进制之间的转换,先转换为二进制后在转换为十进制.(方法:三位一体) 八进制和十进制之间的转换,先转换为二进制后在转换为十进制.(方法:四位一体) 十六进制: A = 10 = 1010b B = 11 = 1011b C = 12 = 1100b D = 13 = 1101b E = 14 = 1110b F = 15 = 1111b 内存

UNIX再学习 -- 文件I/O

在 UNIX/Linux 系统中,一切皆文件,这句话想必都有听过.对于文件的操作几乎适用于所有的设备,这也就看出了文件操作的重要性了.在C语言再学习部分有讲过标准I/O文件操作,参看:C语言再学习 -- 文件 下面我们来讲解下系统文件I/O的. 一.文件描述符 1.文件描述符简介 首先从文件描述符开始讲起.因为,对于内核而言,所有打开的文件都是通过文件描述符引用的.那么文件描述符到底是什么? 文件描述符(file descriptor)通常是一个小的非负整数,内核用以标识一个特定进程正在访问的文

UNIX再学习 -- 环境变量

之前讲gcc编译的时候,参看:C语言再学习 -- GCC编译过程 提到过静态库和共享库,那时只是简单的讲了下它们相关的编译链接,接下来就该详细介绍它们了.不过再讲解之前还需了解一下编程相关的环境变量. 一.环境变量 参看:百度百科--环境变量 环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等. 环境变量时在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用的信息. 1.Windows下的环境变量 (1)环境变量配置 右击我的

语言的学习基础,100个经典的算法

POJ上做做ACM的题 语言的学习基础,100个经典的算法C语言的学习要从基础开始,这里是100个经典的算法-1C语言的学习要从基础开始,这里是100个经典的算法 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔 子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数 为多少? __________________________________________________________________ 程序分析:兔子的规律为数列1,1,2,3,5,8

递归学习(一)最简单的C语言递归求年龄算法

递归是我们在学习编程中,必须要去学习的,虽然递归晦涩难懂 ,但是很多时候,递归的思想会很有用,但是在实际开发中,不建议使用递归,要用循环来代替递归,不然bug无穷. ----------------------------------------------------------- 问题描述: 有5个人坐在一起, 问第5个人,他说比第4个人大2岁, 问第4个人,他说比第3个人大2岁, 问第3个人,他说比第2个人大2岁, 问第2个人,他说比第1个人大2岁, 问最后一个人,他说10岁 第5个人多大