刘雪华,桌子,西宁天气-艺术孩童-培养每一位艺术天分,从孩子开始

频道:趣闻中心 日期: 浏览:300

做任何事情都要有必定的进程,为了处理一个问题而采纳的办法和进程就称为算法。C言语的算法是核算机算法,即核算机能够履行的算法。只要清晰了算法后,才干使运用程序完成某些功用。所以,一般人们会将算法称为程序的魂灵。本文将详细介绍C言语算法的根底常识。

咱们对算法的了解


一个程序应包括对数据的描绘。在程序中要指定数据的类型和数据的组织形式(即数据结构,对操作的描绘(即操作进程),也便是算法(algorithm)。Wirth从前提出了一个经典的公式:数据结构+算法=程序。而谭浩强的总结为:程序=算法+数据结构+程序规划办法+言语和环境

1.1 算法是程序的魂灵

当从头审视自己走过的路时,我越来越能了解算法的重要性。算法不只是东西,而且仍是程序的魂灵。在初涉这一范畴时,就屡次看过Wirth教授的《算法+数据结构=程序》一书。后来思维渐渐搬运到了办法论上,对OO、GP或许IoC这些常识超乎寻常地关怀,却萧瑟了程序的实质。许多实际问题仍是要靠精心规划的算法才干有用处理。

作者曾发现一本比较风趣的书,它是由Udi Manber所写的Introduction to Algorithms——A Creative Approach。此书的最大特色便是数学概括法贯穿全文,我的了解便是“由一粒沙看国际”。杂乱的问题,应怎么对其分化?在这本书中,不只给出了一些详细算法,更重要的是它要培育读者规划算法的才能。而这种才能的中心,在作者看来,便是对概括的了解和灵活运用。

算法是核算机处理信息的实质,由于核算机程序实质上是一个算法,所以应告知核算机切当的进程以履行一个指定的使命,如核算员工的薪水或打印学生的成果单。一般,当算法在处理信息时,数据会从输入设备上读取,写入至输出设备,保存起来供今后运用。

闻名核算机科学家Wirth提出一个公式。

数据结构+算法=程序

实际上,一个程序还应当选用结构化程序规划办法进行程序规划,而且用某一种核算机言语来表明。因而,它能够这样表明。

程序=算法+数据结构+程序规划办法+言语和环境

以上4个方面是一门程序规划言语所应具有的根本常识。其间,算法是魂灵,数据结构是加工目标,言语是东西。算法处理“做什么”和“怎么做”的问题。

程序中的操作句子实际上便是算法的表现。明显,不了解算法就谈不上程序规划。本书尽管不是专门解说算法的,但不会算法就达不到咱们的意图——用C言语进行程序规划。

数据是操作目标,操作的描绘便是操作进程,操作意图是对数据进行加工处理以得到希望的成果。打个比如,厨师做菜肴,需求有菜谱。菜谱上一般应包括配料(数据)与操作进程(算法)。

这样,关于同一些质料就能够加工出不同风味的菜肴。

1.2 何谓算法

做任何事情都要有必定的进程。为处理一个问题而采纳的办法和进程称为算法。核算机能够履行的算法称为核算机算法。核算机算法可分为如下两大类。

  • 数值运算算法:求解数值。
  • 非数值运算算法:事务办理范畴。

看下面的运算。

1×2×3×4×5

为了核算上述运算,一般需求依照如下进程来操作。

第1步:求1×2,得到成果2。

第2步:将第1步得到的乘积乘以3,得到成果6。

第3步:将6再乘以4,得24。

第4步:将24再乘以5,得120。

上述进程便是一个算法,尽管进程有点杂乱。而核算机程序对上述算法进行了改善,它运用如下算法。

第1步:令t=1。

第2步:令i=2。

第3步:核算t×i,乘积依然放在变量t中,可表明为t×it

第4步:会i的值+1,即i+1→i

第5步:假如i≤5,则回来从头履行进程3以及进程4和进程5;不然,算法完毕。

上述算法便是数学中的“n!”公式。

看下面的数学运用题。

(1)有80个学生,要求将他们中成果在60分以上的名字和成果打印出来。

在此设n表明学生的学号,ni表明第i个学生的学号;cheng表明学生成果,chengi表明第i个学生成果。则对应算法表明如下。

第1步:令i=1。

第2步:假如chengi≥60,则输出ni和chengi;不然不输出。

第3步:i+1→i

第4步:若i≤80,则回来进程2;不然,完毕。

(2)判定在1900~2000年中哪一年是闰年,并输出成果。

闰年需求满意的条件如下所示。

  • 能被4整除,但不能被100整除的年份。
  • 能被100整除,又能被400整除的年份。

在此能够设y为被检测的年份,则对应算法如下所示。

第1步:令y=1900。

第2步:若y不能被4整除,则输出y“不是闰年”,然后转到第6步。

第3步:若y能被4整除,不能被100整除,则输出y“是闰年”,然后转到第6步。

第4步:若y能被100整除,又能被400整除,则输出y“是闰年”;不然,输出y“不是闰年”,然后转到第6步。

第5步:输出y“不是闰年”。

第6步:y+1→y

第7步:当y≤2000时,回来第2步持续履行;不然,完毕。

19.1.3 算法的特性

关于程序规划人员来说,有必要会规划算法,并依据算法写出程序。算法的特性如下所示。

  • 有穷性,一个算法应包括有限的操作进程而不能是无限的。
  • 确认性,在算法中每一个进程都应当是确认的,而不能是迷糊的、不置可否的。
  • 有零个或多个输入。
  • 有一个或多个输出。
  • 有用性,在算法中每一个进程都应当能有用地履行,并得到确认的成果。

1.2 算法表明法——流程图


算法的表明办法为算法的描绘和外在表现,上节的算法都是经过言语描绘来表现的。除了言语描绘外,还能够经过流程图来描绘。在日常运用中,流程图的描绘格局如图19-1所示。



图1-1 流程图标识阐明

例如,有80个学生,要求将他们之中成果在60分以上的名字和成果打印出来。上述问题的算法可运用图19-2所示的流程图来表明。



图1-2 算法流程图

在日常流程规划中,流程图一般包括如下3种结构。

  • 次序结构:次序结构如图19-3所示,其间AB两个框是次序履行的。即在履行完A的操作今后再履行B的操作。次序结构是一种根本结构。



图1-3 次序结构

  • 挑选结构:挑选结构也称为分支结构,如图19-4所示。在此结构中必含一个判别框,依据给定条件是否建立而挑选是履行 A框仍是B框。不管条件是否建立,都只能履行A框或B框之一,也便是说AB两个框只要一个,也有必要有一个被履行。



图1-4 挑选结构

  • 循环结构:循环结构分为两种,一种是当型循环,另一种是直到型循环。当型循环是先判别条件P是否建立,若建立才履行A操作,而直到型循环则相反,先履行A操作再判别条件P是否成,当条件不满意时履行循环体,满意时则中止,如图19-5所示。



图1-5 循环结构

在上述3种根本结构中,有以下4个共同点。

  • 只要一个进口。
  • 只要一个出口。
  • 结构内的每个部分都有时机履行。
  • 结构内不存在“死循环”。

本书卖点

本书内容和服务有优势:

1,供给100个进步程序功能的技巧。

2,增加课后练习模块

3,持续发挥一本书包括三本书内容的优势,用从入门到通晓的写法进行。

4,依照C11新版本写作,事例和内容删去过期的技能,让读者真正和实际项目结合起来。

5,赠送市道中契合读者需求的学习材料。

6,全视频解说

7,开设教导读者的视频课

内容提要

本书按部就班、由浅入深地解说了C言语开发的技能。全书共25章。本书不只介绍了C言语的根底和中心常识(如开发东西、语法、运算符、表达式、输入/输出、流程操控、数组、字符串、函数),还解说了C言语中的要点和难点(如指针、结构体、共用体和枚举、链表、位运算、预编译、文件操作、调试、内存办理、高档编程技能、算法、数据结构、网络编程技能等)。此外,本书还经过4个归纳实例,介绍了C言语在归纳项目中的运用。全书内容以“技能解惑”和“典范演练”贯穿全书,引领读者全面把握C言语。

本书不光适用C言语的初学者,也合适有必定C言语根底的读者学习,还能够作为大专院校相关专业的师生用书和训练校园的教材。

欢迎参加程序员读书会,每日好书与你共享

(此处已增加圈子卡片,请到今天头条客户端检查)
热门
最新
推荐
标签