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

1.1 程序

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

图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!然后,下面新的一行.一个光标位于下一行的开始。


图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)。因此,可读可写的称为源代码,计算机可执行的是目标代码。在未来的日子里,你将接触到这个朋友,他非常严格。但请你记住,编译器是你编程中最好的朋友。下面我们展现程序的流程:

图1.3 Hello,World!的一生

1.4 第一章 小结 及 思考

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

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

  1. 《算法竞赛入门经典——训练指南》第一章相关内容

    #<算法竞赛入门经典--训练指南>第一章相关内容 希望各位大牛能指导! 红色为已经做了的...黄色背景是还有不懂地方,希望在年前能刷完第一章啊.... 更新版.google上貌似又加了ex ...

  2. (转)在游戏中使用“CEGUI” — 第一章(底层)

    在游戏中使用"CEGUI" - 第一章(底层) 日期:2006/4/13 – 2006/10/10 本文首次刊登于<游戏创造>,现开放与大家共享,转载请注明出处.   ...

  3. 经典中的品味:第二章 C++基本的对象,类型和值(上)

    摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 自律,是以积极而主动的态度,去解决人生的痛苦~ 上一章,我们大谈了Hel ...

  4. 全文:在游戏中使用CEGUI —— 第一章(底层)

    本文首次刊登于<游戏创造>,现开放与大家共享,转载请注明出处.   作者介绍 唐亮(千里马肝),四年游戏从业经验,曾任职于大宇软星科技(上海)有限公司任程序技术指导,现在ATI任Engin ...

  5. 在游戏中使用“CEGUI” — 第一章(底层)

    简介 CEGUI(Crazy Eddie's GUI http://www.cegui.org.uk)是一个自由免费的GUI库,基于LGPL协议,使用C++实现,完全面向对象设计.CEGUI开发者的目 ...

  6. ASP.NET Core中使用GraphQL - 第一章 Hello World

    前言 你是否已经厌倦了REST风格的API? 让我们来聊一下GraphQL. GraphQL提供了一种声明式的方式从服务器拉取数据.你可以从GraphQL官网中了解到GraphQL的所有优点.在这一系 ...

  7. ASP.NET Core 中文文档 第一章 入门

    原文:Getting Started 翻译:娄宇(Lyrics) 校对:刘怡(AlexLEWIS) 1.安装 .NET Core 2.创建一个新的 .NET Core 项目: mkdir aspnet ...

  8. 最小类型的微型计算机是什么,第一章-微型计算机中的数据类型.ppt

    第一章-微型计算机中的数据类型 第一章 微型计算机中的数据类型 第一章 微型计算机中的数据类型 1.1 常用数据类型 带符号整数.无符号整数. BCD数(包括压缩的和非压缩 的二–十进制码). 字符串 ...

  9. 《HeadFirst Python》第一章学习笔记

    对于Python初学者来说,舍得强烈推荐从<HeadFirst Python>开始读起,这本书当真做到了深入浅出,HeadFirst系列,本身亦是品质的保证.这本书舍得已在<Pyth ...

最新文章

  1. CTO集体怒吼:我到底要不要继续写代码(上篇)
  2. Visual Studio调试/加载速度很慢
  3. 全球农业发展中国方案-国际农民丰收节贸易会:榜样力量
  4. Android之自定义View的实现
  5. ssh中的相对路径与绝对路径的问题
  6. 如何在程序中不用加号实现加法_程序员那些事 | JavaScript基础(六)
  7. Mr.J--C语言头函数的建立(附严薇敏《数据结构》线性表代码)
  8. console.log 用法
  9. centos网卡发送被占满了_CentOS 查看实时网络带宽占用情况方法
  10. hdu 1106 字符串处理
  11. Android开发笔记(一百)折叠式列表
  12. Android Studio 下载ndk
  13. mac的spotlight搜索系统文件
  14. 惠普电脑win10关闭自动调节亮度
  15. Playing games
  16. 【Electron】 NSIS 打包 Electron 生成exe安装包
  17. lisp语言cond和if套用_lisp语言入门
  18. Python绘制图像(Matplotlib)(Ⅵ)
  19. 本周聚划算| 避免上班5分钟被开除 直降2000元企业办公实用利器一站全掌握
  20. 字符串之正则表达式匹配

热门文章

  1. 12bit灰度图像映射到8bit显示及python 实现
  2. 用 div 仿写 input 和 textarea 功能
  3. spring-注解---IOC(3)
  4. 原生JS实现苹果菜单
  5. 第二阶段个人冲刺08
  6. Light OJ 1007
  7. 两个很有用的进程间通信函数popen,pclose
  8. Linq 数据库操作(增删改查)
  9. SATA盘与SAS盘的区别
  10. QQ,MSN,SKYPE等在线状态代码