博文

从初学者到编程高手,几种必学的编程语言[转帖] (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 。.......

阅读全文(3482) | 评论: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 equ......

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

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

摘要:



第一级:神人,天资过人而又是技术狂热者同时还拥有过人的商业头脑,高瞻远瞩,技术过人,大器也。如丁磊,求伯君。

第二级:高人,有天赋,技术过人但没有过人的商业头脑,通常此类人不是顶尖黑客就是技术总监之流。

第三级:牛人,技术精湛,熟悉行业知识,敢于创新,有自己的公司和软件产品。

第四级:工头,技术精湛,有领导团队的能力,此类人大公司项目经理居多。

第五级:技术工人,技术精湛,熟悉行业知识但领导能力欠加,此类人大多为系分人员或资深程序员,基本上桀骜不逊,自视清高,不愿于一般技术人员为伍,在论坛上基本以高手面目出现。

第六级:熟练工人,技术有广度无深度,喜欢钻研但浅尝辄止。此类人大多为老程序员,其中一部分喜欢利用工具去查找网上有漏洞的服务器,干点坏事以获取成绩感。如果心情好,在论坛上他们会回答菜鸟的大部分问题。此级别为软件业苦力的重要组成部分。

第七级:工人,某些技术较熟练但缺乏深度和广度,此类人大多为程序员级别,经常在论坛上提问偶尔也回答菜鸟的问题。为软件产业苦力的主要组成部分。

第八级:菜鸟,入门时间不长,在论坛上会反复提问很初级的问题,有一种唐僧的精神。虽然招人烦但基本很可爱。只要认真钻研,一两年后就能升级到上一层。

第九级:大忽悠,利用中国教育的弊病,顶着一顶高学历的帽子,在小公司里混个软件部经理,设计不行,代码不行,只会胡乱支配下属,拍领导马屁,在领导面前胡吹海侃,把自己打扮成技术高手的模样。把勾心斗角的办公室文化引入技术部门,实在龌龊!

第十级:驴或傻X,会写SELECT语句就说自己精通ORALCE,连寄存器有几种都不知道就说自己懂汇编,建议全部送到日本当IT产业工人,挣了日本人的钱还严重打击日本的软件业!
......

阅读全文(2995) | 评论: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=bonu......

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

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

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

阅读全文(4071) | 评论: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);
fo......

阅读全文(4271) | 评论: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.赋值运算符
用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,......

阅读全文(4109) | 评论: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);

阅读全文(4285) | 评论: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所在目录]/include
LIB: [TC2/3所在目录]/lib
output输出目录请自己设置一个工作目录,以免混在一起。最后还提醒一点: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集成开发环境的使用

......

阅读全文(2309) | 评论: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 (h......

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