经典中的品味:第一章 C++的Hello,World!

“程序设计要通过编写程序的实践来学习”—Brian Kernighan

1.1 程序

何为程序?简单的说,就是为了使计算机能够做事,你需要在繁琐的细节中告诉它怎么做。对于怎么做的描述就是程序。编程是书写和测试怎么做的过程。维基百科上说,一个程序就像一个用汉语(程序设计语言)写下的红烧肉菜谱(程序),用于指导懂汉语和烹饪手法的人(体系结构)来做这个菜。做一个形象的比喻,在生活中某种意义上,你都见到程序。石器时代,“我们用石头打它”。就是个程序。

image

图1.1 ”我们用石头打它“  摘自 《数学之美》

其中,他用怪叫和动作告诉小伙伴这行为,叫做程序。只有懂这个的伙伴才会一起拿起石头砸。但相对计算机来说,计算机很“笨”,为了像计算机解释这些,我们需要一种特定语法精确定义的语言。那就是编程语言,例如C++。

 

1.2 经典品味 ”Hello,world!“

这是经典的例子,在屏幕中输出”Hello,world!“:

?
1
2
3
4
5
6
7
8
#include <iostream>
using namespace std;
int main()
{
    cout << "Hello,World!\n";
    return 0;
}

运行的结果:打印Hello,World!然后,下面新的一行.一个光标位于下一行的开始。

062012391872499[2]
图1.2 Hello,World!输出

程序中,主要工作的代码:

?
1
cout << "Hello,World!\n";

cout是一个标准输出流,使用 << 操作符可以将字符显示到屏幕上。很自然,这是你第一次看到缩写,cout:character outputstream的缩写。刚开始会不适应,但是当你遇见缩写多了的话,你会爱上他。

 

第一行:

?
1
#include <iostream>

他是个指令,这个具体是让我们使用标准的C++流I/O功能。这里,我们使用了cout和它的操作符<<.此外,使用#include包含的文件通常后缀有.h,称为头文件或头。我们基本上是使用C++自己提供的各种功能源代码。比如上面,我们需要什么功能就引入啥头文件。

 

程序入口:

?
1
2
3
4
int main()
{
    return 0;
}

大家都知道一个程序要告诉计算机哪里开始执行,C++每个程序必须有个main函数。一个函数基本是个指令集也称指令序列,计算机会按着原定的顺序执行。一个函数通常包括:

  • 返回类型:这里是int,用来指定返回结果类型。
  • 名字:这里是main
  • 参数列表:这里为空,如果有参数,会写在()
  • 函数体:{}里面写了函数要执行的语句。

 

程序的结束:

?
1
return 0;

要知道,main函数是系统调用的,自然我们需要告诉系统何时结束。返回值可以用于检查程序是否成功,特别在有些系统(unix/linux)。有main()返回的一个 0 表示程序成功终止。

 

1.3你看不到的程序代码之外:编译 链接

”Hello,world!“程序的运行,通过C++编程语言。在它从人可读可改的格式转换为计算机可以理解的东西,这个过程我们需要一个成为“编译器”的程序。

何为编译器?

维基百科上说,编译器(Compiler),是一种电脑程序,它会将用某种编程语言写成的源代码(原始语言),转换成另一种编程语言(目标语言)。它主要的目的是将便于人编写,阅读,维护的高级计算机语言所写作的源代码程序,翻译为计算机能解读、运行的低阶机器语言的程序,也就是可执行文件。做个比喻,一个声控电灯,我们如果想说“把灯打开”,灯显然是不知道这句话的意思。它的世界是:”有声音我就亮“。进而,你的仆人就大叫一声,灯亮了。这个仆人的工作就是编译器的程序原理。

一个现代编译器的主要工作流程如下: 源代码(source code)→ 预处理器(preprocessor)→ 编译器(compiler)→ 汇编程序(assembler)→ 目标代码(object code)→ 链接器(Linker)→ 可执行文件(executables)。因此,可读可写的称为源代码,计算机可执行的是目标代码。在未来的日子里,你将接触到这个朋友,他非常严格。但请你记住,编译器是你编程中最好的朋友。下面我们展现程序的流程:

image

图1.3 Hello,World!的一生

 

1.4 第一章 小结 及 思考

Hello,World! 其实不重要,重要我们熟悉基本思想和工具。曾经看透菜谱,成为了大厨。曾经看破历史的,当了作家或者其他。勤奋,专注,锲而不舍。C++并不难。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261428.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

本地数据jqGrid分页

var mydata; $(function() { var str ; str "<span>共<span idp_total></span>条记录</span> " str "<span>每页" "<select idset_page_size classui-button ui-widget ui-state-default ui-corner-all&g…

避免将项目名称用作映射类型名称

避免将项目名称用作映射类型名称 在 Visual Studio 中向 BizTalk 项目添加新映射时&#xff0c;请不要将项目名称用作类型名称。如果这样做&#xff0c;编译器将生成一个或多个错误&#xff0c;类似于“类型中不存在类型名称‘’”。 若要从 BizTalk 项目内更改映射的类型名称&…

大教堂和市集

该文的作者Eric Raymond是Open Source Software领域的领袖&#xff0c;这方面许多新的思想正是从他那儿产生的&#xff0c;同时他也是UNIX上最流行的Email软件Fetchmail 的作者。 HansB翻译 本博文仅做简单排版 一. 大教堂和市集 Linux的影响是非常巨大的。甚至在&#xff15…

使用eclipse svn塔建(配置)时的一点点心得

有没有人遇到下面这种情况&#xff1f;&#xff1f;自己创建的SVN如下&#xff1a; 但网上别人搭建好的是这样子的&#xff1a; 就是为什么我的只有个主文件&#xff0c;而没有src、webroot、meta-inf、web-inf等子文件呢&#xff1f;&#xff1f; 这是我找了很多网上的资料&am…

android 获取网卡mac_Java获取Linux安卓设备的mac地址方法

Java如何获取Linux或安卓Android设备的mac地址呢&#xff1f;方法非常简单&#xff0c;只需要使用下方代码即可轻松通过java获取mac地址了&#xff0c;代码如下&#xff1a;public String getMacAddress() {String macAddress null;String str "";try {//linux下查…

实例构造器和类(引用类型)

构造器是允许将类型的实例初始化为良好状态的一种特殊方法。构造器方法在“方法定义元数据表”中始终教.ctor。创建一个引用类型的实例时&#xff0c;首先为实例的数据字段分配内存&#xff0c;然后初始化对象的附加字段&#xff08;类型对象指针呵呵同步块索引&#xff09;&am…

android 文件选择器_Android 开发 打开系统文件、图片、视频等 实现单选多选功能...

在网上搜下&#xff0c;如何实现图片的多选或者文件的多选&#xff0c;令人纳闷的是居然多是moudle、或第三方jar包&#xff0c;当然第三方的工程功能复杂或兼容性比较好&#xff0c;并没有说明Android系统是如何提供多选的。既然这么多图片选择器的工程、或者是文件选择器的工…

C语言错误: HEAP CORRUPTION DETECTED

程序源代码&#xff1a; //写文件两种方式(文本文件和二进制文件)#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h>//文本写文件 int writeWord(const char *path,const char *pword){int ERRO_MSG 0;if (path N…

您不能不知的ToString()方法

1.1.1 摘要 相信大家对ToString()方法再熟悉不过了&#xff0c;由于该方法是.NET程序中最常用的方法之一&#xff0c;我们除了可以直接调用ToString()方法之外&#xff0c;.NET中的某些方法也隐式调用ToString()方法&#xff08;WPF&#xff0c;Windows Form和Silverlight等&am…

微信转账一次显示两个_微信为啥分红包和转账两大功能?这4个区别你要知道,望相互转告...

众所周知&#xff0c;自从移动支付普及之后&#xff0c;支付宝、微信就已经成为人们手机中必备的APP&#xff0c;其中微信更是具备社交、支付等一系列功能&#xff0c;所以在国内吸引了超十一亿用户的使用&#xff01;当我们节假日、过年时&#xff0c;很多用户都喜欢给亲朋好友…

java 正则提取及替换字符串

2019独角兽企业重金招聘Python工程师标准>>> <% page import"java.util.regex.Pattern" %><% page import"java.util.regex.Matcher" %><% page import"java.util.List" %><% page import"java.util.Array…

IE的documentMode属性

参看下面链接:《IE的documentModeshuxing》 转载于:https://www.cnblogs.com/chaoguo1234/p/3192865.html

Android传感器编程入门

一、前言 我很喜欢电脑&#xff0c;可是笔记本还是太大&#xff0c;笔记本电脑再小还是要弄个小包背起来的&#xff0c;智能手机则不同&#xff0c;它完全就是一个手机&#xff0c;可以随意装在一个口袋里随身携带。因此我在2002年左右时最喜欢玩装备是Dell的PDA&#xff0c;20…

python引入redis_使用python向Redis批量导入数据

1.使用pipeline进行批量导入数据class Redis_Handler(Handler):def connect(self):#print self.host,self.port,self.tableself.conn Connection(self.host,self.port,self.table)def execute(self, action_name):filename "/tmp/temp.txt"batch_size 10000with o…

使用R语言绘制中国地图

R语言环境 R3.1.1 Windows8.1 需要安装的packages: maptools,gp 绘图所需要的数据 中国地图的GIS数据 &#xff08;可以此下面的网址下载) http://cos.name/wp-content/uploads/2009/07/chinaprovinceborderdata_tar_gz.zip 是一个压缩包&#xff0c;完全解压后包含三个文件&am…

ASP.NET MVC 5 学习教程:控制器传递数据给视图

起飞网 ASP.NET MVC 5 学习教程目录&#xff1a; 添加控制器添加视图修改视图和布局页控制器传递数据给视图添加模型创建连接字符串通过控制器访问模型的数据生成的代码详解使用 SQL Server LocalDBEdit方法和Edit视图详解添加查询Entity Framework 数据迁移之添加字段添加验证…

如何将ListT转换相应的Html(xsl动态转换)(二)

一、前言 紧跟着上一篇随笔&#xff0c;本文主要涉及到如何将xml与xsl动态转换成html&#xff0c;这个才是最关键的地方&#xff0c;所有的内容都是围绕这个主题来进行开展的。根据指定的xsl样式将List<T>转换相应的Html&#xff0c;相关的随笔如下&#xff1a; &#xf…

echarts折线图背景线_echarts设置折线线条颜色和折线点颜色的实例

本文主要介绍了jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法,结合实例形式分析了jQuery图表插件echarts设置折线图的相关操作技巧,需要的朋友可以参考下&#xff0c;希望能帮助到大家。1、问题背景设计一条折线图&#xff0c;但是图形中不用插件自带的颜色&am…

saxbuilder用法(转)

xml为我们在网络交换数据带来很大方便,在java中可以使用saxbuilder来操作xml格式文件,下面介绍一下saxbuilder的常用方法.import org.jdom.Document;import org.jdom.Element;import org.jdom.JDOMException;import org.jdom.input.SAXBuilder;import org.jdom.output.XMLOutpu…

页面添加复制代码功能

简单的"复制代码" 功能<a href"javascript:" οnclick"CopyCode(document.getElementById(code1));">复制代码</a> <div id"code1"> 点击复制 这里放代码这里放代码这里放代码这里放代码这里放代码这里放代码这里放…