既然你已经学会了一些程序的基本知识,让我们更仔细地看看如何设计一个程序。当你坐下来写一个程序时,通常你会遇到一些你想解决的问题,或者你想模拟的情况。新的程序员常常很难理解如何将这个想法转换成实际的代码。但事实证明,你从日常生活中获得了很多你需要的解决问题的技能。
记住最重要的事情(最难做的事情)是在开始编程之前设计你的程序。在许多方面,编程就像建筑。如果你不按照建筑计划建造房子,会发生什么?奇怪的是,除非你很有天赋,你最终会有房子,有很多问题:墙不直,漏水的屋顶,等等。同样的,如果你试图计划之前,你有一个好的计划前进,你会发现你的代码有很多问题,你将不得不花费大量的时间固定,可以完全避免和前面的一点思考过的问题。
一个小小的预先计划会从长远的角度为你节省时间和挫败感。
步骤1:定义问题
记住最重要的事情(最难做的事情)是在开始编程之前设计你的程序。在许多方面,编程就像建筑。如果你不按照建筑计划建造房子,会发生什么?奇怪的是,除非你很有天赋,你最终会有房子,有很多问题:墙不直,漏水的屋顶,等等。同样的,如果你试图计划之前,你有一个好的计划前进,你会发现你的代码有很多问题,你将不得不花费大量的时间固定,可以完全避免和前面的一点思考过的问题。
一个小小的预先计划会从长远的角度为你节省时间和挫败感。
步骤1:定义问题
你需要弄清楚的第一件事是你的程序试图解决什么问题。理想情况下,你应该能用一两句话来陈述这一点。把这些表达成一个结果也是很有用的(你希望达到什么样的结果?)例如:
1
2
3
4
5
6
7
#include <iostream>; // preprocessor statements can't have a semicolon on the end
int main()
{
std:cout < "Hi there; << x; // invalid operator (:), unterminated string (missing "), and undeclared variable
return 0 // missing semicolon at end of statement
}
虽然这一步看起来很明显,但也非常重要。你所能做的最糟糕的事情就是写一个程序,它实际上并不像你(或者你的老板)想要的那样!
步骤2:收集需求
定义你的问题有助于确定你想要什么结果,但它仍然是模糊的。下一步是考虑需求。
需求对于您的解决方案需要遵守的约束(例如预算、时间、空间、内存等)都是一个花哨的词,以及程序必须具备的能力,以满足用户的需求。请注意,您的需求应该类似于“什么”,而不是“如何”。
例如:
#include <iostream>
int main()
{
int a = 10;
int b = 0;
std::cout << a << " / " << b << " = " << a / b; // division by 0 is undefined
return 0;
}