
分形几何学是一门以不规则几何形态为研究对象的几何学。一个数学意义上分形的生成是基于一个不断迭代的方程式,即一种基于递归的反馈系统。虽然分形是一个数学构造,它们同样可以在自然界中被找到,这使得它们被划入艺术作品的范畴。
计算机协助了人们推开分形几何的大门。法国数学家曼德尔勃罗特这位计算机和数学兼通的人物,开创了新的数学分支——分形几何学。分形在医学、土力学、地震学和技术分析中都有应用。
毕达哥拉斯树(Pythagoras tree)是由毕达哥拉斯根据勾股定理所画出来的一个可以无限重复的图形。又因为重复数次后的形状好似一棵树,所以被称为毕达哥拉斯树,也叫“勾股树”。
这个程序,展示了毕达哥拉斯树的生成。执行效果如下:
我的求解思路是:
- 确定直线 p1-p2,并在 p1-p2 的左侧求出 p11-p22,使 p1-p2-p22-p11 构成正方形。
- 求出点 p,使 p-p11-p22 构成含 60 度角的直角三角形。
- 分别将直线 p-p11 和 p-p
...
像 Microsoft Visual Studio(Visual C++)、SQL Server 等微软系的开发平台,不仅仅要安装开发环境,还要安装许多相关组件,涉及到的安装位置除了软件的安装文件夹之外,还有好些组件在系统盘以及系统文件夹内,如果不小心改动了某些组件或者删除了某个文件夹,经常会造成无法彻底卸载的问题。除了卸载,有些安装文件夹只有第一次安装的时候才能选择路径,如果不彻底卸载,再次安装的时候就无法重新选择安装路径。
所以这时候,我们需要一个安全的、官方的、有效的、简单的卸载工具。
这个工具微软已经帮我们准备好了:Microsoft Program Install and Uninstall Troubleshooter
【点这里】查看微软对该工具的介绍,里面有微软的官方下载地址。
不想看那么多的,可以直接【点这里】
...
概述
Visual Studio 强大、方便,但是每次写代码都要先创建新项目,这对于一些简单的代码测试来说有点不方便。
本文介绍一种使用 VS 快速测试代码的方法。
该方法适用任何版本的 VS。“不用创建项目”,是指不用“手工”创建项目,而是通过批处理命令,自动完成相关功能,实现双击图标后就进入代码编写环境。
准备工作
先按照如下步骤进行准备(请根据实际情况调整路径):
1. 建立文件夹 D:\TestCpp\,里面存放用来快速测试代码的项目。
2. 打开 Visual Studio,创建一个 Win32 Console Application 项目作为模版,项目路径 D:\TestCpp\Template\TestCon,其它设置根据自己的习惯来。然后添加代码文件 main.cpp:
#include <stdio.h>
int main()
{
printf("Hello W
...
很多文章都阐述了编写程序时“代码格式”的重要性,甚至还有些硬性的规定。当然,这篇文章并不是否定格式的重要性,初学者甚至应该十分注重格式才对。
但是另一方面,编写程序还应该注重整体,通过代码格式展现出整体的结构。这里举一个例子,CodeBus 网站有一个模拟屏保变幻线的源代码:
https://codebus.cn/zhaoh/post/screensaver-mystify
其中有几行代码是很长的,并且违反了很多条“代码格式”的规定,这里转过来这几行:
// 判断顶点是否越界
if (m_head->pos.x < 0) { m_head->pos.x = -m_head->pos.x; m_step.x = rand() % MAXSTEP + 1; }
else if (m_head->pos.x >= WIDTH) { m_head->pos.x -= m_head->pos.x - WIDTH
...
返回:C/C++ 内功心法(入门篇)- 目录
4. 解惑
编程的前景及就业情况如何?
以计算机程序控制机器替代人力劳动,是大势所趋。
20 年前,学了驾照就可以弄辆出租车养家糊口。现在,手机约车逐步在取代传统的出租车,甚至共享汽车在很多地方都开始普及。再过几年,自动驾驶会取代出租车司机、公交车司机……
计算机种植,精确控制植物所需环境及养分。
计算机诊断病情,甚至实施精确手术。
计算机清洁,自动定期清扫城市街道、住宅小区等。
计算机实现自动实时翻译。
计算机实现自动配药。
计算机实现自动采摘……
这就是趋势,没什么需要担心的。
学编程是否需要天赋?
一句话解释:以大多数人的努力程度之低,根本轮不到拼天赋。
举个例子,一个女生每天出门需要化妆 5 分钟(够神速了吧)。
别人的学习时间是每天 500 分钟(8 小
...
0. 序
很多初学者会被人一眼就看出来是初学者,为什么?原因很多。其中,代码格式是很重要的一项。不注重代码格式,不仅别人看起来不舒服,还会影响自己对代码的阅读。虽然错误的格式不会产生编译错误,但却会让你更容易犯错,并且更难排查错误。所以,学会编写格式优美的代码,是初学者必须要学的一课。
优秀的代码格式并不是唯一的,有很多种风格。本文仅讲解常见的 C/C++ 语言编码规则,而其它规则相信大家在学习工作中会慢慢接触到。
再有就是,很多网站为了便于阅读,都是比较注意代码格式的。例如,如果打算投稿到 CodeBus,看看本文也很有必要。
以下讲解编写代码时在格式上一些常见的注意事项。
1. 正确缩进
所谓缩进,是指在某一行代码的左端留出一部分空白。采用缩进的目的为了清楚的定义一个块的开始和结束,这样会使程序更加清晰易读。虽然目前主流的开发平台都具备智能缩进的功能,但是很多时候修改代码还是需要自己注意缩进问题。
下面的范例代码是求解 100 以内的质数,该范例中有多种缩进情况的例子:
...
返回:C/C++ 内功心法(入门篇)- 目录
5. 寓教于乐
初学编程,更多的是锻炼逻辑思考能力。这里列出几个锻炼逻辑思维的小游戏,空闲的时候可以试试:
- 扫雷(推荐 Win10 商店里的版本)
- 人力资源机器(PC 版本或安卓版本都可以)
这里就不提供下载了,自己想办法吧,这是学编程之前的基本能力。
6. 学习环境的配置
为了跟随本书学习编程,请按照以下要求配置学习环境:
- 使用 Win10 系统,并设置为英文。如果计算机配置不高,可以考虑使用 Win7 或 WinXP 系统。
- 设置 Win10 系统显示文件的扩展名。
- 安装英文版的 Visual C++ 2010 学习版(英文版名称为 Visual C++ 2010 Express)。
下载地址:https://pan.baidu.com/s/1kFb9X-1HV8HRyE
...
返回:C/C++ 内功心法(入门篇)- 目录
3. 学习编程的预备知识
编程是一项有一定门槛的知识,在对计算机的软硬件不够了解的前提下学习编程,会事倍功半。因此,在开始正式讲编程知识之前,本节课先提一些基础要求。
上网
基于网络的 QQ 聊天、淘宝购物、支付宝付款等等,不再多说。着重说这几点:
百度搜索。常规内容的搜索都离不开百度。但是,要学会鉴别搜索结果中的广告与垃圾。
必应搜索。在全球范围内检索资料的不二选择,尤其是在英文网站检索编程相关问题,更是离不开必应搜索。
学会搜索“官方网站”。网上各种资料有真有假有新有旧,最靠谱的,是官方网站的资讯。比如要下载 EasyX ,比较推荐的做法是搜索“EasyX 官网”,然后在官网里面找到所需的下载。
学会鉴别“官方网站”。并不是所有搜到的“官网”都是官方网站。网络中有各种钓鱼网站,做的很
...
返回:C/C++ 内功心法(入门篇)- 目录
C/C++内功心法(入门篇)- 目录
前言
这是一本学习编程的书。
注意,本书学习的是编程,不是 C/C++ 语法,不是 Linux 使用,不是怎样配置编译器,不是学习 C/C++ 标准。我们学习的,只是编程。之所以先强调这点,是因为目前许多同学学习编程的时候,方向都偏了。如果你学习编程学了很久都不得门而入,不妨看看本书。
本书会根据读者的反馈一直在线更新。所以,谢绝转载,没有意义,反倒会给网络留下许多内容陈旧的垃圾。
如果你有更好的建议,欢迎分享给我 yw80@qq.com。
如果你觉得写的还不错,可以通过捐助鼓励下我们:https://go.easyx.cn/donate。
目录
第一章 绪论
1. C/C++ 的历史及特点
2. 编程思维
3. 学习编程的预备知识
4. 解惑
...
返回:C/C++ 内功心法(入门篇)- 目录
1. C/C++ 的历史及特点
有关计算机的历史、C 语言的历史、C++ 的历史,以及各自有什么特点,甚至哪年谁谁谁发明了什么等等,请自行网上搜索。
2. 编程思维
乔布斯说过:“每个人都应该学习编程,因为它会教给你如何思考。”
从厨神的故事开始
我相信每个人对“编程”这个词都有自己的认识。我从一个小故事说起吧。
有个厨神,开了一下小饭店,人们非常喜欢吃他做的菜。
但是厨神也有累的时候,也有生病的时候,也有带着孩子出去玩的时候,这时候虽然有其他厨师烧菜,但顾客的满意度会下降。并且大厨也没有三头六臂,饭店的规模始终无法扩大。
所幸厨神的孩子是学编程的,给支了这么一招:让厨神将菜谱全部写出来,调料全部量化,炒菜过程标准化,整理出一份“超级菜谱”。这样,其他厨师按照这个“超级菜谱”烧的菜,能达到厨神的九成水准,这已经能满足绝大多数顾客的口味了。
然后饭店继续招聘厨师,以这个“超级菜谱”培训新
...
Visual C++ 的控制台项目默认生成的 exe 图标很大众,本文讲解怎样修改 exe 文件的图标。
注:Visual C++ Express(学习版)不支持资源编辑,无法创建资源文件,也就无法添加图标资源。
基础知识
图标属于”资源“,需要依附在资源文件中。
如果创建的项目类型是 Win32 Application 并且不是空项目,那么项目中默认是有资源文件的。否则,就需要先创建资源文件,再添加图标资源。
步骤一:添加资源文件
首先,检查一下项目中是否存在资源文件。资源文件的扩展名是 .rc,如果你的项目名称为 test,通常资源文件的文件名为 test.rc。如果项目中存在资源文件,就不用再添加了,直接进行步骤二。
如果没有资源文件,请按照以下方法添加:
Visual C++ 6.0 这样做:
- 点菜单:File -> New...,选择 Files 中的 Resource Script,并
...
注:Visual C++ Express(学习版)不支持资源编辑,无法创建资源文件,因此也就无法实现内嵌图片资源。
场景描述
如果程序中需要使用一张图片,通常会用相对路径方式指定一个外部文件。例如:
loadimage(NULL, _T("test.jpg"));
这样,将编译后的 .exe 和 test.jpg 放在一起,就可以正确加载图片。许多游戏有几十个甚至上千个文件,就是有类似这样的许多外部数据。
但还有一些情况,希望图片能嵌入编译后的 .exe 里面,这样只需要拷贝一个 .exe 文件就能附带上所需图片。本文就介绍这种情况的实现方法。
什么是资源文件
windows 应用程序是可以包含各种“资源”的,例如:图标、对话框、菜单、快捷键等等,这些资源按照一定的格式,可以和 .exe 链接在一起。
我们所要做的,就是把图片放到资
...
在大家写程序的时候,经常会遇到“按任意键继续”这样的功能。网上能找到的方法主要有两种:
- 使用 _getch() 语句
- 使用 system("pause") 语句
现在挨个说说。
_getch()
_getch() 功能是从控制台输入一个字符(控制台不显示该输入),是 conio.h 里面声明的一个函数。
所以 _getch() 很好的实现了“按任意键继续”的功能。
system("pause")
system 的功能是通过控制台执行一个命令,是 stdlib.h 里面声明的一个函数。
该函数需要一个字符串指针参数表示命令。这里,"pause" 就是 system 函数将要执行的命令。
pause 命令的功能,可以在控制台 cmd.exe 下输入 pause /? 查看,可以看到,pause 的功能是:暂停并显示信息“Press any key to
...
getch() 函数,用于返回用户输入的字符。当连续按键时,该函数返回第一个字符和第二个字符之间,默认有 0.5 秒的延时,并且之后的连续字符,默认是每秒钟 15 次输入。这两个数值可以在控制面板中设置。
如果需要平滑的按键输入,或者同时按下多个按键,就不能用 getch() 了,需要使用另一个 Windows API 函数:GetAsyncKeyState()。该函数原型如下:
SHORT GetAsyncKeyState(
int vKey // virtual-key code
);
vKey 是要检测的按键的虚拟键码,常用的如 VK_UP、VK_DOWN 等,分别表示方向键的上、下等。需要注意:对于 26 个字母的键码,可以直接写 'A'、'B'……,而不要写 VK_A、VK_B。数字键也是,请直接写 '0'、'1'……。全部的 256 种虚拟键码,请参考 MSDN 中的 Virtual-Key Codes。
返回的 SHORT 值,如
...