C++教程之初识编程
突然想写一份C++教程,并且此教程会尽量使用通俗语言来描述,进入正题!
如果你从来没有接触过编程语言,希望我的教程能够帮助你!
一、代码示例
当然我希望你暂时不要纠结我在写什么,把代码贴在前面是想给你看看,它会是什么样子的;如果
一定要取个名字的话,你可以称这份代码为--“著名的helloworld代码”。
#include <iostream> //头文件
int main() //主函数
{
std::cout << "hello world!" << std::endl; //语句
return 0;
}
二、结构
现在应该回到上面的代码,看完之后先请你回忆一下它的结构:头文件---函数---语句;
函数:
对,我没按照顺序讲,因为我希望你先知道什么是函数;
我想你应该学过初等数学了,数学中的函数式什么样的呢?先来看看这个数学函数:
y = cos(x)
现在我们又拿它来分析,当然不是分析cos函数的功能和它的性质,而是分析它的结构;
注意到没有,它包含的部分:y、cos、x、()。我们都知道,每输入一个x都会得到一个y,我们先给他们取个名字吧:
x一般叫做参数;
大家喜欢把y称为输出;
至于cos这个东西,一个名字罢了,因为最初发现它的人把它叫做cos,所以后人都把它叫做cos(比如说,如果它的发现者把它称之为abc,那么我们现在可能都把cos叫做abc了),不过我们还是可以给它取个好听一点的名字,叫做函数名称--函数的名称,如果你理解我前面的话,就会知道函数名称就是一个名字罢了;
还有()这个东西,我们就把它叫做括号吧。。。目的是区分函数名称和参数,因为如果不加括号的话,可以想象cos(x)和cosx(x)这两个函数是有区别的。
到此为止,我们分析完了y=cos(x)这个函数的结构,但是在编程世界里,函数的定义就“很广”,不过说回来,如果你记得数学中函数的定义是什么,就会觉得“很广”这个词是多么的不恰当了。
写到这,突然想到一个词“黑盒子”,如果你读了我的文章,我希望你一直都能把函数都看成一个黑盒子!对,这很重要,不管对于你的理解还是以后的代码架构来说,都希望这样--黑盒子!
语句:
在示例中,
std::cout << "hello world!" << std::endl;
就是一条语句。通俗的说它就是用来描述的。比如说,描述走路这个功能就需要用语句来描述:
1、抬起左脚;
2、左脚前迈;
3、左脚落地;
4、抬起右脚;
5、右脚前迈;
6、右脚落地;
7、回到第1步;
上述是用来描述走路的过程的语句,不过在此需要说明的是:抬脚怎么抬?前迈怎么迈?落地怎么落?这些都可以用前面讲的知识来描述,他们叫做函数,是个黑盒子,因为你并不知道抬脚等等行为的内部实现方法是什么。
再回到前面1-7步描述的是“走路”,在这里“走路”你可以理解为一个函数,不过它没有一个明显的、看得到的返回值,我们把这种看不到返回值的东西叫做空,用void表示,不理解?没关系,以后会见到它的!
通过上面的讲解,你需要知道语句是为函数服务的,也就是说函数是由语句构成的。语句是用来描述函数功能的实现方法的。
如果你已经理解了语句,那么再看看下面的代码:
x = 0.5; //这是一条语句
y = cos(x); //这是一条语句
你应该已经发现,我们说的语句在其最后都加了“;”分号--半角分号。
头文件:
在一份大的工程中,我们通常会写很多各式各样的“函数”,这么多函数都放在一起显然是不太合理的,显得多么的杂乱无章啊!这时候我们就可以用头文件来区分这些格式各样的函数,通常我会习惯把执行功能具有相关性的“函数”都放在一个头文件中,并且给这个文件取一个能描述它大概功能的名字,所以头文件可以描述为一个包含了一些“函数”的文件,当然这个描述实际上是不准确的,就连我在这段话中说的“函数”这个词都是不准确的,不过在你还没有深入了解时,这样的说法大概是可以的。
现在,你已经知道头文件是包含了各式各样的函数的。所以当你想使用某个函数时,请考虑它在哪个头文件下,看一段代码:
int main()
{
std::cout << "hello world!" << std::endl;
return 0;
}
代码将会出错,你看这份代码和最开始的代码有什么区别?缺少下面这条语句:
#include <iostream>
因为main函数里面用到了std::cout 和 std::endl,但是并没说明它们从哪来--不是凭空产生,所以它们都是没有定义的。
应该能体会到头文件的用处了吧?
PS:到这里写完了第一部分,以后可能还会修正部分语言的描述,有什么问题也请告诉我--内容或者你的疑问。
至于会不会有新的文章...先看看有没有人看吧~还是希望我能教一些人的,没人看的话就会没有动力;看的人多了,我就会尽快更新。
C++教程之初识编程的更多相关文章
- 前端组件化Polymer入门教程(1)——初识&&安装
前端组件化Polymer入门教程目录: 前端组件化Polymer入门教程(1)--初识&&安装 前端组件化Polymer入门教程(2)--快速入门 前端组件化Polymer入门教程(3 ...
- Java基础教程:网络编程
Java基础教程:网络编程 基础 Socket与ServerSocket Socket又称"套接字",网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个s ...
- Java基础教程:面向对象编程[2]
Java基础教程:面向对象编程[2] 内容大纲 访问修饰符 四种访问修饰符 Java中,可以使用访问控制符来保护对类.变量.方法和构造方法的访问.Java 支持 4 种不同的访问权限. default ...
- Java基础教程:面向对象编程[1]
Java基础教程:面向对象编程 内容大纲 Java语言概述 Java语言特点 1.Java为纯面向对象的语言,它能够直接反映现实生活中的对象.总之,Everything is object! 2.平台 ...
- Java基础教程:JDBC编程
Java基础教程:JDBC编程 1.什么是JDBC JDBC 指 Java 数据库连接,是一种标准Java应用编程接口( JAVA API),用来连接 Java 编程语言和广泛的数据库. JDBC A ...
- Java基础教程:面向对象编程[3]
Java基础教程:面向对象编程[3] 内容大纲 基础编程 获取用户输入 java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入.我们可以查看Ja ...
- ASP.NET Core 基础教程总结 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 基础教程总结 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 基础教程总结 ASP.NET Core 基础教程总算是有了个简单 ...
- ASP.NET Core 登录登出 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 登录登出 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 登录登出 上一章节我们总算完善了注册的功能,而且也添加了一个用户,现 ...
- ASP.NET Core 新增用户 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 新增用户 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 新增用户 上一章节我们实现了一个注册表单,但也留了一些东西还没完成, ...
随机推荐
- Nginx Rewrite详解
Nginx Rewrite详解 引用链接:http://blog.cafeneko.info/2010/10/nginx_rewrite_note/ 原文如下: 在新主机的迁移过程中,最大的困难就是W ...
- 在vs2013下手把手创建/调用dll
body { font: 16px } 参考了大佬的文章 首先,体会一下静态编译: 创建Win32Project,选DLL,添加一个.h和.cpp文件 点击生成解决方案,然后去debug目录下拷贝.l ...
- MySql foreach属性
foreach属性 属性 描述 item 循环体中的具体对象.支持属性的点路径访问,如item.age,item.info.details.具体说明:在list和数组中是其中的对象,在map中是val ...
- 数据库导入Excel数据的简易方法
当然,最糙猛的方式就是自己写程序读取Excel程序然后插进数据库,但那种方式要求太高.说个简单方法,主流数据库的管理工具支持CSV文件格式数据向表导入,而Excel可以另存外CSV文件,这种导入就手工 ...
- [译文]Domain Driven Design Reference(二)—— 让模型起作用
本书是Eric Evans对他自己写的<领域驱动设计-软件核心复杂性应对之道>的一本字典式的参考书,可用于快速查找<领域驱动设计>中的诸多概念及其简明解释. 其它本系列其它文章 ...
- SEO概念及SEO相关优化
SEO是英文Search Engine Optimization的缩写, 中文意译为“搜索引擎优化”. 简单地说, SEO是指从自然搜索结果获得网站流量的技术和过程. http://www.imooc ...
- Java并发之Condition
在使用Lock之前,我们使用的最多的同步方式应该是synchronized关键字来实现同步方式了.配合Object的wait().notify()系列方法可以实现等待/通知模式.Condition接口 ...
- [CVPR 2016] Weakly Supervised Deep Detection Networks论文笔记
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px "Helvetica Neue"; color: #323333 } p. ...
- PAT1032: Sharing (25)
1032. Sharing (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue To store Engl ...
- 谈论seo思维性对优化中起到决定性的作用
在<SEO的艺术>又出版之后,SEO艺术更加受到了广大SEOer的关注和热捧,在这本书里面,也有很多的不为人知的技巧分享.SEO的艺术强调的是SEO融入网络营销,融入社会化媒体大潮,然而这 ...