博文

从初学者到编程高手,几种必学的编程语言[转帖] (2005-11-13 11:46:00)

摘要: 对于初学者,我建议从 python 开始学。因为它在语言设计上很整洁,帮助文件也很全面。而且也是 object-oriented (O-O),尽管我把它作为一个初学者开始的语言,并不代表它的用处和功能不强大。实际上它是个功能强大,可以用来做大的编程工程的语言。 我知道国内对 python 可能还不了解,因为它相对来说也比较新(1990),到现在有12年的历史了,但是它在国外已经被广泛接受和认同,快速发展。不过我知道邮电出版社最近刚出了一本介绍 python 编程的书,大家可以查询。python 的主页 www.python.org Java 也是个很好的语言来开始学编程。不过它比 python 复杂。国外的大学现在都采用 java 作为电脑专业的凯时语言。总之我觉得除了 python 之外,它也可以作为一个极好的初学者语言。 不过,会了这两种语言,并不代表你就是一个编程员了。学会编程的关键就是 -- “ 编程思想“ 。 学会怎样用一种很“ 广泛的思维“ 去考虑“ 编程问题 “,也就是这种思维是可以放之于任何一种编程语言都可以解决问题的,而不是局限于单纯的一种语言。这样当你需要学习一种新的语言时,你只要学习他的语法等等就可以了,至于怎样用这种语言解决编程问题不是早就在你的脑子里了吗。所以,这也就是为什么很多程序员可以拿到一种语言,一两个星期就可以使用的很熟练了。这,也同样要求你去学几种完全不同的语言。 C 语言是非常有效率的,很多时候你都需要考虑内存的管理等底层的东西。很可惜这些都需要你去花很多的时间去做,问每一个 C/C++ 的程序员,用 C/C++ 编程是不是一个很头疼的事。好消息是,现在的机器都已经很高级,运算的很快,在很多时候我们是不用考虑用 C/C++ 去做,忽略它所带来的好处,当然除非这个工程真的很需要处理底层的东西(象 内核的编辑,3-D 图形等)。很多时候 python, java 等都可以实现。另外在现在很多工程所要求的时间都不是足够充裕来用 C/C++ 去做,所以在商业上时间就是金钱,这个代价谁也付不起。 我这里并没有说 C/C++ 不好,你不应该学。相反我觉得我们应该学,但不是作为一个初学者的语言来学。在 C 和 C++ 之间,我推荐先学 C 。.因为它相对来说较小,简单。作为一种底层编程语言,C,你可以学到很直接的内存管理,指针,等......

阅读全文(3544) | 评论:0

关于指针的教程(2005-11-13 11:44:00)

摘要: 什么是指针?   其实指针就像是其它变量一样,所不同的是一般的变量包含的是实际的真实的数据,而指针是一个指示器,它告诉程序在内存的哪块区域可以找到数据。这是一个非常重要的概念,有很多程序和算法都是围绕指针而设计的,如链表。 开始学习   如何定义一个指针呢?就像你定义一个其它变量一样,只不过你要在指针名字前加上一个星号。我们来看一个例子:   下面这个程序定义了两个指针,它们都是指向整型数据。 int* pNumberOne; int* pNumberTwo;   你注意到在两个变量名前的“p”前缀了吗?这是程序员通常在定义指针时的一个习惯,以提高便程序的阅读性,表示这是个指针。现在让我们来初始化这两个指针: pNumberOne = &some_number; pNumberTwo = &some_other_number;   &号读作“什么的地址”,它表示返回的是变量在内存中的地址而不是变量本身的值。在这个例子中,pNumberOne 等于some_number的地址,所以现在pNumberOne指向some_number。 如果现在我们在程序中要用到some_number,我们就可以使用pNumberOne。 我们来学习一个例子:   在这个例子中你将学到很多,如果你对指针的概念一点都不了解,我建议你多看几遍这个例子,指针是个很复杂的东西,但你会很快掌握它的。   这个例子用以增强你对上面所介绍内容的了解。它是用C编写的(注:原英文版是用C写的代码,译者重新用C++改写写了所有代码,并在DEV C++ 和VC++中编译通过!) #include <iostream.h> void main() { // 声明变量: int nNumber; int *pPointer; // 现在给它们赋值: nNumber = 15; pPointer = &nNumber; //打印出变量nNumber的值: cout<<"nNumber is equal to :"<< nNumber<<endl; // 现在通过指针改变nNumber的值: *pPointer = 25; //证明nNumber已经被上面的程序改变 //重新打印出nNumber的值: c......

阅读全文(3007) | 评论:0

程序员的10种级别(2005-11-13 11:40:00)

摘要:第一级:神人,天资过人而又是技术狂热者同时还拥有过人的商业头脑,高瞻远瞩,技术过人,大器也。如丁磊,求伯君。第二级:高人,有天赋,技术过人但没有过人的商业头脑,通常此类人不是顶尖黑客就是技术总监之流。 第三级:牛人,技术精湛,熟悉行业知识,敢于创新,有自己的公司和软件产品。 第四级:工头,技术精湛,有领导团队的能力,此类人大公司项目经理居多。 第五级:技术工人,技术精湛,熟悉行业知识但领导能力欠加,此类人大多为系分人员或资深程序员,基本上桀骜不逊,自视清高,不愿于一般技术人员为伍,在论坛上基本以高手面目出现。 第六级:熟练工人,技术有广度无深度,喜欢钻研但浅尝辄止。此类人大多为老程序员,其中一部分喜欢利用工具去查找网上有漏洞的服务器,干点坏事以获取成绩感。如果心情好,在论坛上他们会回答菜鸟的大部分问题。此级别为软件业苦力的重要组成部分。 第七级:工人,某些技术较熟练但缺乏深度和广度,此类人大多为程序员级别,经常在论坛上提问偶尔也回答菜鸟的问题。为软件产业苦力的主要组成部分。 第八级:菜鸟,入门时间不长,在论坛上会反复提问很初级的问题,有一种唐僧的精神。虽然招人烦但基本很可爱。只要认真钻研,一两年后就能升级到上一层。 第九级:大忽悠,利用中国教育的弊病,顶着一顶高学历的帽子,在小公司里混个软件部经理,设计不行,代码不行,只会胡乱支配下属,拍领导马屁,在领导面前胡吹海侃,把自己打扮成技术高手的模样。把勾心斗角的办公室文化引入技术部门,实在龌龊! 第十级:驴或傻X,会写SELECT语句就说自己精通ORALCE,连寄存器有几种都不知道就说自己懂汇编,建议全部送到日本当IT产业工人,挣了日本人的钱还严重打击日本的软件业! ......

阅读全文(3048) | 评论:0

经典c程序100例[从菜鸟到高手必看](2005-11-13 11:37:00)

摘要:[转贴,如有错误请一起探讨] 【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去      掉不满足条件的排列。 2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i<5;i++)    /*以下为三重循环*/ for(j=1;j<5;j++)   for (k=1;k<5;k++)   {    if (i!=k&&i!=j&&j!=k)    /*确保i、j、k三位互不相同*/    printf("%d,%d,%d\n",i,j,k);   }}==============================================================【程序2】题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高   于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提   成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于   40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于   100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。      2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15; if(i<=100000)  bonus=i*0.1; else if(i<=200000)     bonus=bonus1+(i-100000)*0.075;    else if(i<=4......

阅读全文(5375) | 评论:0

欢迎大家光临我的BLOG~!(2005-11-13 11:29:00)

摘要:如果大家有什么话说,请在下面跟贴~!......

阅读全文(4130) | 评论:1

[转帖]C基本结构:顺序、选择、循环(2005-11-13 11:26:00)

摘要:  for语句 for语句是C语言所提供的功能更强,使用更广泛的一种循环语 句。其一般形式为: for(表达式1;表达式2;表达3) 语句; 表达式1通常用来给循环变量赋初值,一般是赋值表达式。也允 许在for语句外给循环变量赋初值,此时可以省略该表达式。 表达式2通常是循环条件,一般为关系表达式或逻辑表达式。 表达式3通常可用来修改循环变量的值,一般是赋值语句。 这三个表达式都可以是逗号表达式, 即每个表达式都可由多个 表达式组成。三个表达式都是任选项,都可以省略。 一般形式中的“语句”即为循环体语句。for语句的语义是: 1.首先计算表达式1的值。 2.再计算表达式2的值,若值为真(非0)则执行循环体一次, 否则跳 出循环。 3.然后再计算表达式3的值,转回第2步重复执行。 在整个for循环过程中,表达式1只计算一次,表达式2和表达式 3则可能计算多次。循环体可能多次执行,也可能一次都不执行。for 语句的执行过程如图所示。void main(){ int n,s=0; for(n=1;n<=100;n++) s=s+n; printf("s=%d\n",s); } 用for语句计算s=1+2+3+...+99+100 int n,s=0; for(n=1;n<=100;n++) s=s+n; printf("s=%d\n",s); 本例for语句中的表达式3为n++,实际上也是一种赋值语句,相 当于n=n+1,以改变循环变量的值。void main(){ int a=0,n; printf("\n input n: "); scanf("%d",&n); for(;n>0;a++,n--) printf("%d ",a*2); } 用for语句修改例题。从0开始,输出n个连续的偶数。 int a=0,n; printf("\n input n: "); scanf("%d",&n); for(;n>0;a++,n--) printf("%d ",a*2); 本例的for语句中,表达式1已省去,循环变量的初值在for语句 之前由scanf语句取得,表达式3是一个逗号表达式,由a++,n-- 两 个表达式组成。每循环一次a自增1,n自减1。a的变化使输出的偶数 递增,n的变化控制循次数。在使用for语句中要注......

阅读全文(4317) | 评论:0

[转帖]C语言教程&nbsp;&nbsp;数据类型、运算符、表达式(2005-11-13 11:24:00)

摘要: 2.无论是强制转换或是自动转换,都只是为了本次运算的需要而 对变量的数据长度进行的临时性转换,而不改变数据说明时对 该变量定义的类型。main(){ float f=5.75; printf("(int)f=%d,f=%f\n",(int)f,f); } f<--5.75 将float f强制转换成int f float f=5.75; printf("(int)f=%d,f=%f\n",(int)f,f); 本例表明,f虽强制转为int型,但只在运算中起作用, 是临时 的,而f本身的类型并不改变。因此,(int)f的值为 5(删去了小数) 而f的值仍为5.75。基本运算符和表达式 运算符的种类、优先级和结合性 C语言中运算符和表达式数量之多, 在高级语言中是少见的。 正是丰富的运算符和表达式使C语言功能十分完善。 这也是C语言 的主要特点之一。 C语言的运算符不仅具有不同的优先级, 而且还有一个特点, 就是它的结合性。在表达式中, 各运算量参与运算的先后顺序不仅 要遵守运算符优先级别的规定,还要受运算符结合性的制约, 以便 确定是自左向右进行运算还是自右向左进行运算。 这种结合性是其 它高级语言的运算符所没有的,因此也增加了C语言的复杂性。运算符的种类 C语言的运算符可分为以下几类:1.算术运算符 用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余 (或称模运算,%)、自增(++)、自减(--)共七种。2.关系运算符 用于比较运算。包括大于(>)、小于(<)、等于(==)、 大于等 于(>=)、小于等于(<=)和不等于(!=)六种。3.逻辑运算符 用于逻辑运算。包括与(&&)、或(||)、非(!)三种。 4.位操作运算符 参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、 位非(~)、位异或(^)、左移(<<)、右移(>>)六种。5.赋值运算符 用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=, %=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。6.条件运算符 这是一个三目运算符,用于条件求值(?:)。7.逗号运算符 用于把若干表达式组合成一个表达式(,)。 8.指针运算符 用于取......

阅读全文(4167) | 评论:0

[转帖]C基本结构:顺序、选择、循环(2005-11-13 11:23:00)

摘要: C语言程序设计 本课介绍C语言程序设计的基本方法和基本的程序语句。 从程序流程的角度来看,程序可以分为三种基本结构, 即顺序 结构、分支结构、循环结构。 这三种基本结构可以组成所有的各种 复杂程序。C语言提供了多种语句来实现这些程序结构。 本章介绍 这些基本语句及其应用,使读者对C程序有一个初步的认识, 为后 面各章的学习打下基础。 C程序的语句 C程序的执行部分是由语句组成的。 程序的功能也是由执行语 句实现的。C语句可分为以下五类: 1.表达式语句 2.函数调用语句 3.控制语句 4.复合语句 5.空语句 1.表达式语句 表达式语句由表达式加上分号“;”组成。其一般形式为: 表达式; 执行表达式语句就是计算表达式的值。例如: x=y+z; 赋值语句 y+z; 加法运算语句,但计算结果不能保留,无实际意义 i++; 自增1语句,i值增1 2.函数调用语句 由函数名、实际参数加上分号“;”组成。其一般形式为: 函数名(实际参数表); 执行函数语句就是调用函数体并把实际参数赋予函数定义中的 形式参数,然后执行被调函数体中的语句,求取函数值。(在第五章 函数中再详细介绍)例如printf("C Program");调用库函数,输出字 符串。 3.控制语句 控制语句用于控制程序的流程, 以实现程序的各种结构方式。 它们由特定的语句定义符组成。C语言有九种控制语句。 可分成以 下三类: (1) 条件判断语句 if语句,switch语句 (2) 循环执行语句 do while语句,while语句,for语句 (3) 转向语句 break语句,goto语句,continue语句,return语句 4.复合语句 把多个语句用括号{}括起来组成的一个语句称复合语句。 在程 序中应把复合语句看成是单条语句,而不是多条语句,例如 { x=y+z; a=b+c; printf(“%d%d”,x,a); } 是一条复合语句。复合语句内的各条语句都必须以分号“;”结 尾,在括号“}”外不能加分号。 5.空语句 只有分号“;”组成的语句称为空语句。 空语句是什么也不执 行的语句。在程序中空语句可用来作空循环体。例如 while(getchar()!='\n') ; 本语句的功能是,只要从键盘输入的字符不是回车则重新输入。 这里的循环体为空语句。 赋值语句 赋值语句是由赋值表达式再加上分号构......

阅读全文(4336) | 评论:0

Turbo C(V2.0)使用指南(2005-11-13 11:22:00)

摘要:   在开始看本文以前,我先说明一下C语言的安装和使用中最应该注意的地方:许多网友在下载Turbo C 2.0和Turbo C++ 3.0后,向我问得最多的是在使用过程中碰到如下问题:1)出现找不到 stdio.h conio.h等include文件;2)出现cos.obj无法连接之类的错误   这些问题是由于没有设置好路径引起的,目前下载的TC2,TC3按安装分类大概有两种版本:一是通过install安装,这类应该已经设置好了路径;二是直接解压后建立TC.EXE的快捷方式,在WINDOWS下双击即可运行(DOS下直接运行TC.EXE),目前国内大多为这种,因此下载使用前请注意路径设置:设置方法为:OPTION->DIRECTORIES:INCLUDE: [TC2/3所在目录]/includeLIB: [TC2/3所在目录]/liboutput输出目录请自己设置一个工作目录,以免混在一起。最后还提醒一点:FILES中的Change dir(改变当前目录)中应设置为当前程序所在目录。一、 Turbo C 2.0的安装和启动  Turbo C 2.0的安装非常简单, 只要将1#盘插入A驱动器中, 在DOS的"A>" 下键入: A>INSTALL 即可, 此时屏幕上显示三种选择:1. 在硬盘上创造一个新目录来安装整个Turbo C 2.0系统。2. 对Turbo C 1.5更新版本。这样的安装将保留原来对选择项、颜色和编辑功能键的设置。3. 为只有两个软盘而无硬盘的系统安装Turbo C 2.0。  这里假定按第一种选择进行安装, 只要在安装过程中按对盘号的提示, 顺序插入各个软盘, 就可以顺利地进行安装, 安装完毕将在C盘根目录下建立一个TC 子目录, TC下还建立了两个了目录LIB和INCLUDE, LIB子目录中存放库文件, INCLUDE子目录中存放所有头文件。运行Turbo C2.0时, 只要在TC 子目录下键入TC并回车即可进入Turbo C 2. 0 集成开发环境。二、 Turbo C 2.0集成开发环境的使用进入Turbo C 2.0集成开发环境中后, 屏幕上显示:──────────────────────────────  File Edit Run Compile Project Options Debug Break/watch......

阅读全文(2358) | 评论:0

Visual C++编程技巧之一(2005-11-13 11:20:00)

摘要: 1. 如何获取应用程序的实例句柄? 应用程序的 实例句柄保存在CWinAppIm_hInstance 中,可以这么调用 AfxGetInstancdHandle获得句柄. Example: HANDLE hInstance=AfxGetInstanceHandle(); 2. 如何通过代码获得应用程序主窗口的指针? 主窗口的 指针保存在CWinThread::m_pMainWnd中,调用 AfxGetMainWnd实现。 AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED); //使程序最大化. 3.如何在程序中获得其他程序的 图标? 两种方法: (1) SDK函数 SHGetFileInfo 或使用 ExtractIcon获得图标资源的 handle, (2) SDK函数 SHGetFileInfo获得有关文件的 很多信息,如大小图标,属性,类型等. Example(1): 在程序窗口左上角显示 NotePad图标. void CSampleView: OnDraw(CDC * pDC) { if( :: SHGetFileInfo(_T("c:\pwin95\notepad.exe"),0, &stFileInfo,sizeof(stFileInfo),SHGFI_ICON)) { pDC ->DrawIcon(10,10,stFileInfo.hIcon); } } Example(2):同样功能,Use ExtractIcon Function void CSampleView:: OnDraw(CDC *pDC) { HICON hIcon=:: ExtractIcon(AfxGetInstanceHandle(),_T ("NotePad.exe"),0); if (hIcon &&hIcon!=(HICON)-1) pDC->DrawIcon(10,10,hIcon); } 说明: 获得notepad.exe的路径正规上来说用GetWindowsDirectory 函数得到,如果是调用 win95下的画笔,应该用访问注册表的方法获得其路径,要作成一个比较考究的程序,考虑应该全面点. 4.如何编程结束应用程序?如何编程控制windows的重新引导? 这是个很简单又是编程中......

阅读全文(3401) | 评论:0