 |
经典C语言面试题
|
|
| |
| 1.从文件中读取数值(大约有10000个数据)计算他们的平均值。要求程序执行速度最快;2.计算打印一个二叉树所用的时间复杂度。3.从文件中随即提取一个字符串,只能扫描文件一次,且不能用表格存储所有字符串在文件中的偏移。4.如何检测链表是否带有循环。5.编写代码确定一个变量是有符号数还是无符号数。6.文件描述符和文件指针有何区别。7.库函数和系统调用有何区别。8.数组和指针这两种类型有何区别。9.静态库和动态库有何区别。10.总线错误(bus error)和断错误(segment fault)有何区别。11.typedef int x[10]和#define x int[10]的区别。12.linux中的信号是什么。13.linux中的线程和进程有何区别。本文转载自IT网it求职笔试真题库网。
|
|
| 作者:不祥 oases2008张贴于2005-01-01 00:00:00.0,共阅读1767次,回复0次 |
|
|
 |
轻轻松松穿透防火墙
|
|
| |
| 如今采用局域网方式接入Internet已经是各个公司、高校和政府机关的主要上网方式,这种方式既节省IP地址,又方便管理和控制。通常网管会在局域网的出口处设置各种防火墙,这样一方面保证了局域网内部的安全xx,另一方面又可以控制局域网内部人员的访问权限。可这样也限制了使用者的使用权限,与外界的联系也很不方便。比方说对于在公司里上班的上班一族和局域网里的穷学生来说,最痛恨的事情莫过于可恨的Boss为了防止大家偷懒而关闭了大多数端口,只允许使用有限的服务,如WWW、POP3、SMTP等。这样就用不成很多工具,如QQ、Cterm、FTP等,你和外界的联系会很不方便,有MM而不能聊、有BBS而不能灌、有精彩的歌曲而不能Down,人世间最大的痛苦莫过于此……怎么办?别急别急,本文教你几招,轻轻松松穿透防火墙,尽情使用各种工具!好,下面我们一起来看这几招的原理解说和实战说明。
名次解释:
协议
协议(Protocol)就是一组在网络上发送信息的规则和约定。这些规则控制在网络设备间交换消息的内容、格式、定时、顺序和错误,通俗说就是不同网络程序的交流语言。我们常见的QQ使用UDP协议、ICQ使用TCP协议、E-mail程序使用POP3和SMTP协议,而在常见的协议中SOCKS是一种比较复杂的协议。
端口
端口(Port)可以认为是计算机与外界通讯交流的出口。其中硬件领域的 ...
|
|
| 作者:不祥 bluejoe张贴于2004-05-26 18:12:19.0,共阅读4279次,回复1次 |
|
|
 |
C++类机制的实现细节
|
|
| |
| 为了搞清楚VC中类的实现专门写了一个最简单的类,用来观察它的实现过程,代码如下: // test.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "CTest.h"
int main(int argc, char* argv[])
{
CTest aTest;
aTest.a(1,2);
return 0;
}
// CTest.h: interface for the CTest class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_CTEST_H__2CCCDCFC_6C3A_48BC_9CD0_E7A8E63431D9__INCLUDED_)
#define AFX_CTEST_H__2CCCDCFC_6C3A_48BC_9CD0_E7A8E63431D9__INCLUDED_
#if _MSC_VER > 1000
#pr ...
|
|
| 作者:不祥 try_yuyi张贴于2004-07-24 19:16:27.0,共阅读3248次,回复2次 |
|
|
 |
面向对象的分析技术
|
|
| |
|
|
|
| 作者:不祥 zqdkq张贴于2004-09-16 10:40:05.0,共阅读2267次,回复0次 |
|
|
 |
一个求PI的外星程序
|
|
| |
|
# include "stdio.h"
long a=10000,b,c=2800,d,e,f[2801],g;
void main(){
for(;b-c;)f[b++]=a/5;
for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)
for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);
}
能求900多位的PI值,速度还可以,给大家研究下.:)
|
|
| 作者:不祥 Bccv张贴于2004-04-08 09:10:16.0,共阅读2371次,回复1次 |
|
|
 |
对话框中使用ON_UPDATE_COMMAND_UI更新菜单
|
|
| |
|
症状
从命令用户界面处理函数(Command UI handler)改变菜单状态(启用/禁用,选择/取消选
择,更改文字)在由对话框处理时没有正常工作。
void CTestDlg::OnUpdateFileExit(CCmdUI* pCmdUI
{
pCmdUI->Enable(FALSE); //没有显示为禁用.
pCmdUI->SetCheck(TRUE); // 没有文字前显示选定标记.
pCmdUI->SetRadio(TRUE); // 没有在文字前显示点.
pCmdUI->SetText("Close"); //没有更改菜单文字.
}
原因
在下拉菜单显示的时候, WM_INITMENUPOPUP消息被先发送以显示菜单项。MFC CFrameWn
d::OnInitMenuPopup 函数遍历菜单项并为每个菜单项调用更新命令处理函数(如果有的
话).菜单的外观被更新以反映它的状态(启用/禁用,选择/取消选择)
更新用户界面机制在基于对话框的应用程序中不能工作,因为CDialog没有OnInitMenuP
opup 处理函数,而使用CWnd's 默认处理函数,该函数没有为菜单项调用更新命令处理函
数。
解决
适用下列步骤解决此问题
在消息映射中添加ON_WM ...
|
|
| 作者:不祥 jerry张贴于2004-06-14 12:50:56.0,共阅读4687次,回复0次 |
|
|
 |
IE编程技巧
|
|
| |
| 1.实现Ctrl+C:
ExecWB(OLECMDID_COPY,OLECMDEXECOPT_DONTPROMPTUSER,NULL,NULL);
2.实现Ctrl+V:
ExecWB(OLECMDID_PASTE,OLECMDEXECOPT_DONTPROMPTUSER,NULL,NULL);
3.实现查找:
MSHTML::IHTMLDocument2Ptr pdoc;
_variant_t varinput,varoutput;
IOleCommandTarget *pCmd;
HRESULT hr;
pdoc=GetHtmlDocument();
hr=pdoc.QueryInterface(IID_IOleCommandTarget,&pCmd);
if(SUCCEEDED(hr))
{
varinput=_T("");
hr=pCmd->Exec(&CGID_MSHTML,IDM_FIND,OLECMDEXECOPT_DODEFAULT,&varinput,&varou
tput);
}
4.实现显示源程序:
MSHTML::IHTMLDocument2Ptr pdoc;
_variant_t varinput,varoutput;
IOleCommandTarget *pC ...
|
|
| 作者:不祥 jerry张贴于2004-06-11 10:00:57.0,共阅读2930次,回复0次 |
|
|
 |
刷屏技术的实现
|
|
| |
|
在实现绘图的过程中,显示的图形总是会闪烁,笔者曾经被这个问题折磨了好久, 通过向高手请教,搜索资料,问题已基本解决,现将文档整理出来以供大家参考. 1.显示的图形为什么会闪烁?
我们的绘图过程大多放在OnDraw或者OnPaint函数中,OnDraw在进行屏幕显示时是由OnPaint进行调用的。当窗口由于任何原因需要重绘时,总是先用背景色将显示区清除,然后才调用OnPaint,而背景色往往与绘图内容反差很大,这样在短时间内背景色与显示图形的交替出现,使得显示窗口看起来在闪。如果将背景刷设置成NULL,这样无论怎样重绘图形都不会闪了。当然,这样做会使得窗口的显示乱成一团,因为重绘时没有背景色对原来绘制的图形进行清除,而又叠加上了新的图形。有的人会说,闪烁是因为绘图的速度太慢或者显示的图形太复杂造成的,其实这样说并不对,绘图的显示速度对闪烁的影响不是根本性的。例如在OnDraw(CDC *pDC)中这样写:
pDC->MoveTo(0,0);
pDC->LineTo(100,100);
这个绘图过程应该是非常简单、非常快了吧,但是拉动窗口变化时还是会看见闪烁。其实从道理上讲,画图的过程越复杂越慢闪烁应该越少,因为绘图用的时间与用背景清除屏幕所花的时间的比例越大人对闪烁的感觉会越不明显。比如:清楚屏幕时间为1s,绘图时间也是为1s,这样在10s内的连 ...
|
|
| 作者:不祥 jerry张贴于2004-06-08 11:34:24.0,共阅读3172次,回复0次 |
|
|
 |
白乔原创:轻轻松松C to C++[2]
|
|
| |
| 二、挑战#define
#define是C提供的一条很有用的指令,但在C++中,很有可能杜绝宏指令的使用。
1 .const
宏指令允许用户指定某一标识符的值作为一个常量,如:
#define PI 3. 1415926
它也可以用来定义字符串:
#define HZK16 "HZK16F"
以下使用可以通过:
cout << "PI is“<<PI;
cout << "Filename: "<< HZK16;
但宏毕竟不是一个合法的对象,虽然它伪装得很完美。C++为用户提供了常量修饰符const,可以指定某个对象的值为常量。它阻止用户对其进行赋值或其它副作用,类似于上例:
const float PI=3.1415926;
char*const HZK16="HZK16F";
PI = 3. 14; //error
HZK16="HZK16K"; //error: Cannot modify a const object
但对于指针的处理似乎有些复杂,例如以下使用却又合法:
HZK16[5]=’r’; //ok HZK16 ="HZK16K"
清楚地了解const修饰的范围很有必要,如下是声明形式与相应含义:
char*const cpl="I love you!“; //const修饰’*’,cp1是一个指向字符的指针常量
const ch ...
|
|
| 作者:不祥 bluejoe张贴于2004-06-03 22:13:48.0,共阅读2403次,回复0次 |
|
|
 |
生死MFC程序
|
|
| |
| MFC将大部分函数都进行了封装,程序员只要改写部分重要的virtual函数即可,这往往使初学者摸不着头脑,连个WinMain函数都看不到,程序从哪开始从哪结束?基本的条理搞不清,永远也不会有提高。下面简单讲下基运行过程.
1,CMyWinApp theApp 程序从这里开始
2,_tWinMain() 在APPMODUL.CPP 它实际上只调用AfxWinMain函数
3,AfxWinMain() WINAMIN.CPP,去掉一些次要信息,它作的事就是:
int AFXAPI AfxWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPTSTR lpCmdLine, int nCmdShow)
{
int nReturnCode = -1;
CWinThread* pThread = AfxGetThread();
CWinApp* pApp = AfxGetApp(); ->实际上就是取得CMyWinApp对象指针
AfxWinInit(hInstance, hPrevInstance, lpCmdLine, nCmdShow)
pApp->InitApplication()
pThread->InitInstance()
pThread->Run();
AfxWinTerm();
...
|
|
| 作者:不祥 bluejoe张贴于2004-06-03 14:20:55.0,共阅读3091次,回复0次 |
|
|
 |
白乔原创:轻轻松松C to C++
|
|
| |
| C++技术固然是很时髦的,许多C用户都想在尽可能短的时间内为自己贴上C++的标签。介绍C++的书很多,但只有那些已经侥幸入门的用户才偶尔去翻翻,仍有不少在C++门口徘徊的流浪汉。
本文只针对C用户,最好是一位很不错的老用户(譬如他在遇到最简单的问题时都尝试着使用指针),通过一些C和更好的C++(本文用的是Borland C++3.1版本)例程介绍有关C++的一些知识,让读者朋友们“浅入深出”,轻轻松松C to C++! 一、标签!标签!
快快为你的程序贴上C++的标签,让你看起来很像个合格的C++用户……
1.注释(comment)
C++的注释允许采取两种形式。第一种是传统C采用的/*和*/,另一种新采用的则是//,它表示从//至行尾皆为注释部分。读者朋友完全可以通过//使你的代码带上C++的气息,如test0l:
//test01.cpp
#include <iostream.h>
//I'm a C++user!
//…and C is out of date.
void main()
{
cout<<"Hello world!\n"; //prints a string
}Hello-world!
如果你尝试着在test0l. exe中找到这些高级的注释,很简单,它们不会在那里的。
2. cincout
你可能从test ...
|
|
| 作者:不祥 bluejoe张贴于2004-05-31 21:40:06.0,共阅读2623次,回复1次 |
|
|
 |
便利的开发工具-log4cpp快速使用指南
|
|
| |
| 以前写的一个文章,介绍log4cpp的,始发于这里:
http://www-900.ibm.com/developerWorks/cn/linux/l-log4cpp/index.shtml
便利的开发工具-log4cpp快速使用指南
作者: hehe (9:37 pm)
以前写的一个文章,介绍log4cpp的,始发于这里:
http://www-900.ibm.com/developerWorks/cn/linux/l-log4cpp/index.shtml
便利的开发工具-log4cpp快速使用指南
内容:
优点
原理
手动使用步骤
配置文件驱动方式使用步骤
相关考虑
参考资料
关于作者
在 Linux 专区还有:
教程
工具与产品
代码与组件
文章
李群 (liqun@nsfocus.com)
绿盟科技
2003 年 9 月
log4cpp是个基于LGPL的开源项目,是基于优秀的日志处理跟踪项目Java语言的log4j移植过
来的。log4j介绍的文档很多,在java领域使用的也比较广泛,而这个功能强大的库对国内
的C++语言开发人员却使用的不多。这里从开发人员使用的角度介绍这个库,使开发人员用
最少的代价尽快掌握这种技术。下面先简单介绍一下这个项目的优点(也是log4j的优点)
,然后分原理,手动使用步骤, ...
|
|
| 作者:不祥 Bccv张贴于2004-05-28 12:58:48.0,共阅读5796次,回复0次 |
|
|
 |
21世纪的智能编译器
|
|
| |
| 在这个演讲中,我先简要讲述四十多年前我作为计算机工业界的一名程序员时的早期经历。我将描述我所看到的编程实践方面的不断改进,特别是在我现在工作的最大的软件公司--微软。这会有助于我们预测以后四十年在智能编译器的进一步改善和编程语言质量的进一步提高。我将强调大学和工业界中高级研究的贡献。
在这个演讲中,我先简要讲述四十多年前我作为计算机工业界的一名程序员时的早期经历。我将描述我所看到的编程实践方面的不断改进,特别是在我现在工作的最大的软件公司--微软。这会有助于我们预测以后四十年在智能编译器的进一步改善和编程语言质量的进一步提高。我将强调大学和工业界中高级研究的贡献。
在二十世纪,编译器的定义是就是一段程序,它能读一些用抽象(几乎是数学的)记号表述的用户程序并将其翻译成更晦涩难懂的但能在计算机上直接运行的机器码。一个严重的问题是许多编译好的程序含有错误,一些甚至会导致程序崩溃。检测和消除这些错误就需要艰辛的劳动,即费时耗力的调试过程。
目前,调试问题可以通过其他辅助生成测试条件和测试管理的工具来加速程序缺陷的诊断。但是调试过程的成本和延误仍然是整个程序开发过程的主要部分。
在二十一世纪,编译器和其他程序分析工具会变得更加智能化。它们将更多地理解程序员的意图,能够在程序可能不会实现那些意图时给出警告。程序错误和检测它们的成本将成为过去。卸去了常犯错误的负担,程序员就 ...
|
|
| 作者:不祥 Bccv张贴于2004-05-28 12:56:28.0,共阅读2238次,回复0次 |
|
|
 |
如何使tcp包和udp包穿透防火墙
|
|
| |
| 通过本文的httptunnel 技术同时逃过了防火墙的屏蔽以及系统的追踪试验,我们可以看到网络安全仅仅依靠某种或某几种手段是不可靠的,同时对安全系统的盲目性依赖往往会造成巨大的安全隐患。希望通过本文能引起管理员对网络安全防护系统的思考。
什么是http暗藏通道
什么是局域网安全,系统管理员怎样才能保障局域网的安全?这是一个不断变化的安全概念,很长的一个时期以来,在局域网与外界互联处放置一个防火墙,严格控制开放的端口,就能在很大程度上掌握安全的主动权,方便的控制网内外用户所能使用的服务。比如,在防火墙上仅仅开放80,53两个端口,那么无论是内部还是外面的恶意人士都将无法使用一些已经证明比较危险的服务。
但要注意一点,防火墙在某种意义上是很愚蠢的,管理员对防火墙的过分依赖以及从而产生的懈怠情绪将不可避免的形成安全上的重大隐患,作为一个证明,"通道"技术就是一个很好的例子,这也是本文要讨论的。
那么什么是通道呢?这里所谓的通道,是指一种绕过防火墙端口屏蔽的通讯方式。防火墙两端的数据包封装在防火墙所允许通过的数据包类型或是端口上,然后穿过防火墙与对端通讯,当封装的数据包到达目的地时,再将数据包还原,并将还原后的数据包交送到相应的服务上。举例如下:
A主机系统在防火墙之后,受防火墙保护,防火墙配置的访问控制原则是只允许80端口的数据进出,B主机系统在防火墙之外,是开放的。现在假设 ...
|
|
| 作者:不祥 bluejoe张贴于2004-05-26 18:07:09.0,共阅读2385次,回复0次 |
|
|
 |
利用双计算机调试程序
|
|
| |
| 在游戏编程时,调试程序是很困难的事情,特别是全屏模式,总是无法切换到VC的IDE环境,以前我一般是利用BltFast代替Flip以保证GDI Surface始终在前,但效果不是太好,前一段时间我在VC中发现一个宝贝,可以利用两台计算机调试程序,一台运行程序,另一台运行VC来调试,再加上TRACE输出,真是爽的不得了,下面是我的做法:
1. 保证两台电脑是联网的,最好是都摆在你的面前,不然的话你肯定要跑来跑去 了。还要保证你的程序在两台电脑上都能正常运行,例如都装上DX8。
2. 假设你用A机器运行VC来编程和调试,用B机器来运行你的程序,如果B机器没有装VC,则需要把VC的Debug Monitor拷到B机器上,具体文件是MSVCMON.EXE, MSVCRT.DLL, TLN0T.DLL, DM.DLL, MSVCP6O.DLL和MSDIS110.DLL,如果B机器运行的是NT还要拷贝文件PSAPI.DLL。这些文件在VC的安装目录下Common\MSDev98\Bin目录和系统目录中
3. 在B机器上建立一个共享目录,一定要设成完全共享以保证A能随时在B上写文件。
4. 在A上打开你的程序工程文件, Alt+F7打开Project Setting,选中Debug页面,在Excutable for debug session和 Remote executable ...
|
|
| 作者:不祥 bluejoe张贴于2004-05-26 17:57:34.0,共阅读1921次,回复0次 |
|
|
 |
白乔原创:DOS时代-汉字的处理技术(四)
|
|
| |
| 5.小汉字库的使用
需要注意是,在建立小汉字库的同时,最好还要记住其中的排列顺序,这样才能方便地通过索引数组来选择字模信息。静态库的内容可以通过test. txt来观察,而动态库的内容却不能直观地显示,如果忘了的话,我们编制以下的小工具来实现浏览功能:
/*testl8. c*/
#include <stdio.h>
#include <graphics.h>
int GetBit(unsigned char c int n)
{
return ((c>>n)& 1);
}
main()
{
FILE*fp;
int i i1 i2 i3 x = 0 y = 0 gd = VGA gm = VGAHI;
long length;
char bit [32];
initgraph(& gd &gm "");
fp = fopen("testl.hzk" "rb");
fseek(fp 0 SEEK_END);
length = ftell(fp) /32L;
rewind(fp);
for(i = 0; i <length; i++)
{
f ...
|
|
| 作者:不祥 bluejoe张贴于2004-05-25 22:27:46.0,共阅读5201次,回复0次 |
|
|
 |
白乔原创:DOS时代-汉字的处理技术(二)
|
|
| |
| 6.特殊显示
UCDOS3. 0以后版本都向用户提供了特殊显示的功能,在使用特殊显示功能之前,必须先运行RDSL.COM(打印字库读取模块)和TX. COM(特殊显示模块)。
如同输入法模块一样,这两个程序同样也是TSR程序。它们修改了lOH号中断,预先截获特殊显示命令串并予以解释执行。
C语言调用特殊显示的命令格式如下:
printf ("\16[命令串] ");
具体的命令串格式请参考相关手册。显示特殊汉字是特显功能中的一个重要组成部分,其命令串包括许多控制命令:
①-x 横坐标
②|y 纵坐标
③@ 字形 指定汉字显示的字形,取值范围为A-X或a-t。如:L代表48 * 48点阵黑体字
④@ 宽,高 指定汉字显示的大小
⑤= 字库 选择汉字显示的字库编号,取值范围为0-33。如:2代表HZKSLHTJ字库文件。
⑥# 字号n 选择汉字的字号,字号范围为0-7,n可以为“+(正常)”、“-(扁体)”、“|(长体)”三种。
⑦& 行距
⑧^ 字距
⑨( 前景色
⑩) 背景色
如
printf("\16[{-100|100=2#0+ (14)4青春工作室}]");
将在(100100)处以红底黄字显示96 * 96点阵的黑体“青春工作室”五个字。
特显功能主要用来设计软件的封面,而在运行软件时最好不再依赖于中文系统,这就要求 ...
|
|
| 作者:不祥 bluejoe张贴于2004-05-23 18:17:43.0,共阅读3929次,回复1次 |
|
|
 |
白乔原创:DOS时代-汉字的处理技术(一)
|
|
| |
| 有很多这样的编者,他们永远不会在一本书中详尽地叙述一个看起来非常简单的例子。因为这样看来象是在浪费纸张。但是初学者永远是有的,在碰到困难的时候,他们很需要得到耐心的指导和帮助,而事实上他们所看到的都是些“高层次”的内容。每个编者都是从初学者开始的,但他们开始编书的时候,往往不屑于那些细节的问题,这是令读者很苦恼的。
汉字是怎样写到屏幕上来的,中断能用来干什么,还有怎样让你的程序支持鼠标的操作,在此我们开辟了系列讲座:汉字的处理技术、中断的处理技术、鼠标的处理技术,内容由浅至深,环环相扣,很符合初学者的特点。每一章节都提供有很好的例程,并且附上程序的真实运行结果。建议读者要读懂它们,并且能够“临摹”出一些类似的程序来。
关于本文的读者对象,要求能熟悉C语言的基本语法以及关于文件的基本操作,还有一点UCDOS的操作。“程序永远没有结束的时候”。希望读者朋友们能相互切磋,共同提高。汉字的处理技术(一)
许多读者朋友学会了基本的C语言编程以后,就开始对汉字技术产生了兴趣。本篇分别从中文状态、西文状态、文本方式、图形方式四种情形进行汉字处理的介绍。
一、中文状态下的汉字处理
1.第一个汉字处理程序
学习C语言首先都是从著名的“Hello world!”程序起步,它的程序清单如下:
/*test01l. c*/
main( )
{
printf("Helloworld! ...
|
|
| 作者:不祥 bluejoe张贴于2004-05-21 20:46:40.0,共阅读4499次,回复1次 |
|
|
 |
如何真实地模拟火焰效果
|
|
| |
| 模拟火焰效果如何真实地模拟火焰效果
作者:周军
游戏制作离不开各种各样的特效,火焰效果更是这些特效当中最常用的一种。在网上有很多的这方面的例子,但似乎都不太理想。下面我主要介绍几种有效的火焰模拟算法。
在讲述火焰算法之前,我想先介绍一个经典的Blur算法,这将为我们后面的文章提供很好的技术基础,因为这是模拟火焰的关键所在。^_^ 对于不同的效果我们要采取不同的模糊(Blur)算法,在这里我只介绍最简单的一种。
其实Blur算法相当简单,并不像很多人想象的那么神秘,只要一句话就可以解释清楚。我们所要做的不过是把屏幕上的每一个点用它周围的四个点的平均值代替即可。即:
好了,下面我们进入主题,Let’ s get in …… FIRE ! ! !
总的来说,模拟一个火焰效果需要以下这三个步骤:放置热源、火焰上升、减掉衰减因子。
1. 放置热源:
放置热源很好理解,也很好实现,我们只需要在屏幕的适当位置(想升起火焰的地方)放上一些亮点就可以了,比如:
for (int i=0; i<320; i++)
putpixel (i, 199, rand()%256);
2. 火焰上升:
我们已经有了热源,那么如何使火焰升起来呢?这就要用到我们刚才讲到的Blur了。由于火焰是要向上升的,所以我们不能简单的选择待处理pixel的上、下 、左、右四个 ...
|
|
| 作者:不祥 xler张贴于2004-05-19 20:05:02.0,共阅读2653次,回复0次 |
|
|
 |
编程思想之于团队精神
|
|
| |
| 为什么需要有团队?答案其实很简单,就像我们编程,没有必有将所有功能放在一个函数里实现,这样不仅我们难以做到,还难以发现错误和难以维护。这就是一个人闭门造车、埋头苦干,他将很难把事情做好,且自身也难以进步。于是我们需要将程序模块化,把大的功能分成各个小的部分来实现。现在好了,由于各部分实现的功能较简单,就容易做到了,且发现错误和维护也比较容易了,因此我们需要团队!
但是,新的问题又来了。各个模块怎样才能很好地结合起来共同完成最后的功能哩?这就需要各个模块都要有接口,各个模块能否相互调用并很好地结合关键在于接口能否被外部所理解。于是我们的团队各个组或成员就需要交流,需要有好的交流方式,大家能否能否相互协作共同完成任务取决于大家能否充分地交流和相互理解!
好了,现在我们的各个模块都已做好了。最后要怎么来实现整体功能呢?各个模块单独执行吗?不是,我们需要一个main()函数来指挥和调用各个模块,让他们充分发挥自己的功能。所以我们的团队还需要一个Leader!
这就是编程,这就是生活。
|
|
| 作者:不祥 barco张贴于2004-05-16 12:34:57.0,共阅读2740次,回复4次 |
|
|