当前位置:文档之家› C++电子教程

C++电子教程

C++电子教程
C++电子教程

1.1 如何学好VC

这个问题很多朋友都问过我,当然流汗是必须的,但同时如果按照某种思路进行有计划的学习就会起到更好的效果。万事开头难,为了帮助朋友们更快的掌握VC开发,下面我将自己的一点体会讲一下:

1、需要有好的C/C++基础。正所谓“磨刀不误砍柴工”,最开始接触VC时不要急于开始Windows程序开发,而是应该进行一些字符界面程序的编写。这样做的目的主要是增加对语言的熟悉程度,同时也训练自己的思维和熟悉一些在编程中常犯的错误。更重要的是理解并能运用C++的各种特性,这些在以后的开发中都会有很大的帮助,特别是利用MFC进行开发的朋友对C++一定要能熟练运用。

2、理解Windows的消息机制,窗口句柄和其他GUI句柄的含义和用途。了解和MFC各个类功能相近的API函数。

3、一定要理解MFC中消息映射的作用。

4、训练自己在编写代码时不使用参考书而是使用Help Online。

5、记住一些常用的消息名称和参数的意义。

6、学会看别人的代码。

7、多看书,少买书,买书前一定要慎重。

8、闲下来的时候就看参考书。

9、多来我的主页。^O^

后面几条是我个人的一点意见,你可以根据需要和自身的情况选用适用于自己的方法。

此外我将一些我在选择参考书时的原则:

对于初学者:应该选择一些内容比较全面的书籍,并且书籍中的内容应该以合理的方式安排,在使用该书时可以达到循序渐进的效果,书中的代码要有详细的讲解。尽量买翻译的书,因为这些书一般都比较易懂,而且语言比较轻松。买书前一定要慎重如果买到不好用的书可能会对自己的学习积极性产生打击。

对于已经掌握了VC的朋友:这种程度的开发者应该加深自己对系统原理,技术要点的认识。需要选择一些对原理讲解的比较透彻的书籍,这样一来才会对新技术有更多的了解,最好书中对技术的应用有一定的阐述。尽量选择示范代码必较精简的书,可以节约银子。

此外最好涉猎一些辅助性的书籍。

1.2 理解Windows消息机制

Windows系统是一个消息驱动的OS,什么是消息呢?我很难说得清楚,也很难下一个定义(谁在嘘我),我下面从不同的几个方面讲解一下,希望大家看了后有一点了解。

1、消息的组成:一个消息由一个消息名称(UINT),和两个参数(WPARAM,LPARAM)。当用户进行了输入或是窗口的状态发生改变时系统都会发送消息到某一个窗口。例如当菜单转中之后会有WM_COMMAND消息发送,WPARAM的高字中(HIWORD(wParam))是命令的ID号,对菜单来讲就是菜单ID。当然用户也可以定义自己的消息名称,也可以利用自定义消息来发送通知和传送数据。

2、谁将收到消息:一个消息必须由一个窗口接收。在窗口的过程(WNDPROC)中可以对消息进行分析,对自己感兴趣的消息进行处理。例如你希望对菜单选择进行处理那么你可以定义对WM_COMMAND进行处理的代码,如果希望在窗口中进行图形输出就必须对WM_PAINT进行处理。

3、未处理的消息到那里去了:M$为窗口编写了默认的窗口过程,这个窗口过程将负责处理那些你不处理消息。正因为有了这个默认窗口过程我们才可以利用Windows的窗口进行开发而不必过多关注窗口各种消息的处理。例如窗口在被拖动时会有很多消息发送,而我们都可以不予理睬让系统自己去处理。

4、窗口句柄:说到消息就不能不说窗口句柄,系统通过窗口句柄来在整个系统中唯一标识一个窗口,发送一个消息时必须指定一个窗口句柄表明该消息由那个窗口接收。而每个窗口都会有自己的窗口过程,所以用户的输入就会被正确的处理。例如有两个窗口共用一个窗口过程代码,你在窗口一上按下鼠标时消息就会通过窗口一的句柄被发送到窗口一而不是窗口二。

5、示例:下面有一段伪代码演示如何在窗口过程中处理消息

LONG yourWndProc(HWND hWnd,UINT uMessageType,WPARAM wP,LPARAM)

{

switch(uMessageType)

{//使用SWITCH语句将各种消息分开

case(WM_PAINT):

doYourWindow(...);//在窗口需要重新绘制时进行输出

break;

case(WM_LBUTTONDOWN):

doYourWork(...);//在鼠标左键被按下时进行处理

break;

default:

callDefaultWndProc(...);//对于其它情况就让系统自己处理

break;

}

}

接下来谈谈什么是消息机制:系统将会维护一个或多个消息队列,所有产生的消息都回被放入或是插入队列中。系统会在队列中取出每一条消息,根据消息的接收句柄而将该消息发送给拥有该窗口的程序的消息循环。每一个运行的程序都有自己的消息循环,在循环中得到属于自己的消息并根据接收窗口的句柄调用相应的窗口过程。而在没有消息时消息循环就将控制权交给系统所以Windows可以同时进行多个任务。下面的伪代码演示了消息循环的用法:

while(1)

{

id=getMessage(...);

if(id == quit)

break;

translateMessage(...);

}

当该程序没有消息通知时getMessage就不会返回,也就不会占用系统的CPU时间。下图为消息投递模式

在16位的系统中系统中只有一个消息队列,所以系统必须等待当前任务处理消息后才可以发送下一消息到相应程序,如果一个程序陷如死循环或是耗时操作时系统就会得不到控制权。这种多任务系统也就称为协同式的多任务系统。Windows3.X就是这种系统。

而32位的系统中每一运行的程序都会有一个消息队列,所以系统可以在多个消息队列中转换而不必等待当前程序完成消息处理就可以得到控制权。这种多任务系统就称为抢先式的多任务系统。Windows95/NT就是这种系统。

1.3 利用Visual C++/MFC开发Windows程序的优势

MFC借助C++的优势为Windows开发开辟了一片新天地,同时也借助ApplicationWizzard

使开发者摆脱离了那些每次都必写基本代码,借助ClassWizard和消息映射使开发者摆脱了定义消息处理时那种混乱和冗长的代码段。更令人兴奋的是利用C++的封装功能使开发者摆脱Windows中各种句柄的困扰,只需要面对C++中的对象,这样一来使开发更接近开发语言而远离系统。(但我个人认为了解系统原理对开发很有帮助)

正因为MFC是建立在C++的基础上,所以我强调C/C++语言基础对开发的重要性。利用C++的封装性开发者可以更容易理解和操作各种窗口对象;利用C++的派生性开发者可以减少开发自定义窗口的时间和创造出可重用的代码;利用虚拟性可以在必要时更好的控制窗口的活动。而且C++本身所具备的超越C语言的特性都可以使开发者编写出更易用,更灵活的代码。

在MFC中对消息的处理利用了消息映射的方法,该方法的基础是宏定义实现,通过宏定义将消息分派到不同的成员函数进行处理。下面简单讲述一下这种方法的实现方法:

代码如下

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)

//{{AFX_MSG_MAP(CMainFrame)

ON_WM_CREATE()

//}}AFX_MSG_MAP

ON_COMMAND(ID_FONT_DROPDOWN, DoNothing)

END_MESSAGE_MAP()

经过编译后,代码被替换为如下形式(这只是作讲解,实际情况比这复杂得多)://BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)

CMainFrame::newWndProc(...)

{

switch(...)

{

//{{AFX_MSG_MAP(CMainFrame)

// ON_WM_CREATE()

case(WM_CREATE):

OnCreate(...);

break;

//}}AFX_MSG_MAP

// ON_COMMAND(ID_FONT_DROPDOWN, DoNothing)

case(WM_COMMAND):

if(HIWORD(wP)==ID_FONT_DROPDOWN)

{

DoNothing(...);

}

break;

//END_MESSAGE_MAP()

}

}

newWndProc就是窗口过程只要是该类的实例生成的窗口都使用该窗口过程。

所以了解了Windows的消息机制在加上对消息映射的理解就很容易了解MFC开发的基本思路了。

1.4 利用MFC进行开发的通用方法介绍

以下是我在最初学习VC时所常用的开发思路和方法,希望能对初学VC的朋友有所帮助和启发。

1、开发需要读写文件的应用程序并且有简单的输入和输出可以利用单文档视结构。

2、开发注重交互的简单应用程序可以使用对话框为基础的窗口,如果文件读写简单这可利用CFile进行。

3、开发注重交互并且文件读写复杂的的简单应用程序可以利用以CFormView为基础视的单文档视结构。

4、利用对话框得到用户输入的数据,在等级提高后可使用就地输入。

5、在对多文档要求不强烈时尽量避免多文档视结构,可以利用分隔条产生单文档多视结构。

6、在要求在多个文档间传递数据时使用多文档视结构。

7、学会利用子窗口,并在自定义的子窗口包含多个控件达到封装功能的目的。

8、尽量避免使用多文档多视结构。

9、不要使用多重继承并尽量减少一个类中封装过多的功能。

1.5 MFC中常用类,宏,函数介绍

常用类

CRect:用来表示矩形的类,拥有四个成员变量:top left bottom right。分别表是左上角和右下角的坐标。可以通过以下的方法构造:

CRect( int l, int t, int r, int b ); 指明四个坐标

CRect( const RECT& srcRect ); 由RECT结构构造

CRect( LPCRECT lpSrcRect ); 由RECT结构构造

CRect( POINT point, SIZE size ); 有左上角坐标和尺寸构造

CRect( POINT topLeft, POINT bottomRight ); 有两点坐标构造

下面介绍几个成员函数:

int Width( ) const; 得到宽度

int Height( ) const; 得到高度

CSize Size( ) const; 得到尺寸

CPoint& TopLeft( ); 得到左上角坐标

CPoint& BottomRight( ); 得到右下角坐标

CPoint CenterPoint( ) const; 得当中心坐标

此外矩形可以和点(CPoint)相加进行位移,和另一个矩形相加得到“并”操作后的矩形。

CPoint:用来表示一个点的坐标,有两个成员变量:x y。可以和另一个点相加。

CString:用来表示可变长度的字符串。使用CString可不指明内存大小,CString会根据需要自行分配。下面介绍几个成员函数:

GetLength 得到字符串长度

GetAt 得到指定位置处的字符

operator + 相当于strcat

void Format( LPCTSTR lpszFormat, ... ); 相当于sprintf

Find 查找指定字符,字符串

Compare 比较

CompareNoCase 不区分大小写比较

MakeUpper 改为小写

MakeLower 改为大写

CStringArray:用来表示可变长度的字符串数组。数组中每一个元素为CString对象的实例。下面介绍几个成员函数:

Add 增加CString

RemoveAt 删除指定位置CString对象

RemoveAll 删除数组中所有CString对象

GetAt 得到指定位置的CString对象

SetAt 修改指定位置的CString对象

InsertAt 在某一位置插入CString对象

常用宏

RGB

TRACE

ASSERT

VERIFY

常用函数

CWindApp* AfxGetApp();

HINSTANCE AfxGetInstanceHandle( );

HINSTANCE AfxGetResourceHandle( );

int AfxMessageBox( LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0 );用于弹出一个消息框

2.1 和GUI有关的各种对象

在Windows中有各种GUI对象(不要和C++对象混淆),当你在进行绘图就需要利用这些对象。而各种对象都拥有各种属性,下面分别讲述各种GUI对象和拥有的属性。

字体对象CFont用于输出文字时选用不同风格和大小的字体。可选择的风格包括:是否为斜体,是否为粗体,字体名称,是否有下划线等。颜色和背景色不属于字体的属性。关于如何创建和使用字体在2.2 在窗口中输出文字中会详细讲解。

刷子CBrush对象决定填充区域时所采用的颜色或模板。对于一个固定色的刷子来讲它的属性为颜色,是否采用网格和网格的类型如水平的,垂直的,交叉的等。你也可以利用8*8

的位图来创建一个自定义模板的刷子,在使用这种刷子填充时系统会利用位图逐步填充区域。关于如何创建和使用刷子在2.3 使用刷子,笔进行绘图中会详细讲解。

画笔CPen对象在画点和画线时有用。它的属性包括颜色,宽度,线的风格,如虚线,实线,点划线等。关于如何创建和使用画笔在2.3 使用刷子,笔进行绘图中会详细讲解。

位图CBitmap对象可以包含一幅图像,可以保存在资源中。关于如何使用位图在2.4 在窗口中绘制设备相关位图,图标,设备无关位图中会详细讲解。

还有一种特殊的GUI对象是多边形,利用多边形可以很好的限制作图区域或是改变窗口外型。关于如何创建和使用多边形在2.6 多边形和剪贴区域中会详细讲解。

在Windows中使用GUI对象必须遵守一定的规则。首先需要创建一个合法的对象,不同的对象创建方法不同。然后需要将该GUI对象选入DC中,同时保存DC中原来的GUI对象。如果选入一个非法的对象将会引起异常。在使用完后应该恢复原来的对象,这一点特别重要,如果保存一个临时对象在DC中,而在临时对象被销毁后可能引起异常。有一点必须注意,每一个对象在重新创建前必须销毁,下面的代码演示了这一种安全的使用方法:

OnDraw(CDC* pDC)

{

CPen pen1,pen2;

pen1.CreatePen(PS_SOLID,2,RGB(128,128,128));//创建对象

pen2.CreatePen(PS_SOLID,2,RGB(128,128,0));//创建对象

CPen* pPenOld=(CPen*)pDC->SelectObject(&pen1);//选择对象进DC

drawWithPen1...

(CPen*)pDC->SelectObject(&pen2);//选择对象进DC

drawWithPen2...

pen1.DeleteObject();//再次创建前先销毁

pen1.CreatePen(PS_SOLID,2,RGB(0,0,0));//再次创建对象

(CPen*)pDC->SelectObject(&pen1);//选择对象进DC

drawWithPen1...

pDC->SelectObject(pOldPen);//恢复

}

此外系统中还拥有一些库存GUI对象,你可以利用

CDC::SelectStockObject(SelectStockObject( int nIndex )选入这些对象,它们包括一些固定颜色的刷子,画笔和一些基本字体。

?BLACK_BRUSH Black brush.

?DKGRAY_BRUSH Dark gray brush.

?GRAY_BRUSH Gray brush.

?HOLLOW_BRUSH Hollow brush.

?LTGRAY_BRUSH Light gray brush.

?NULL_BRUSH Null brush.

?WHITE_BRUSH White brush.

?BLACK_PEN Black pen.

?NULL_PEN Null pen.

?WHITE_PEN White pen.

?ANSI_FIXED_FONT ANSI fixed system font.

?ANSI_VAR_FONT ANSI variable system font.

?DEVICE_DEFAULT_FONT Device-dependent font.

?OEM_FIXED_FONT OEM-dependent fixed font.

?SYSTEM_FONT The system font. By default, Windows uses the system font to draw menus, dialog-box controls, and other text. In Windows versions 3.0 and later, the system font is proportional width; earlier versions of Windows use a fixed-width system font.

?SYSTEM_FIXED_FONT The fixed-width system font used in Windows prior to version 3.0. This object is available for compatibility with earlier versions of Windows.

?DEFAULT_PALETTE Default color palette. This palette consists of the 20 static colors in the system palette.

这些对象留在DC中是安全的,所以你可以利用选入库存对象来作为恢复DC中GUI对象。

大家可能都注意到了绘图时都需要一个DC对象,DC(Device Context设备环境)对象是一个抽象的作图环境,可能是对应屏幕,也可能是对应打印机或其它。这个环境是设备无关的,所以你在对不同的设备输出时只需要使用不同的设备环境就行了,而作图方式可以完全不变。这也就是Windows耀眼的一点设备无关性。如同你将对一幅画使用照相机或复印机将会产生不同的输出,而不需要对画进行任何调整。DC的使用会穿插在本章中进行介绍。

2.2 在窗口中输出文字

在这里我假定读者已经利用ApplicationWizard生成了一个SDI界面的程序代码。接下来的你只需要在CView派生类的OnDraw成员函数中加入绘图代码就可以了。在这里我需要解释一下OnDraw函数的作用,OnDraw函数会在窗口需要重绘时自动被调用,传入的参数CDC* pDC 对应的就是DC环境。使用OnDraw的优点就在于在你使用打印功能的时候传入OnDraw的DC 环境将会是打印机绘图环境,使用打印预览时传入的是一个称为CPreviewDC的绘图环境,所以你只需要一份代码就可以完成窗口/打印预览/打印机绘图三重功能。利用Windows的设备无关性和M$为打印预览所编写的上千行代码你可以很容易的完成一个具有所见即所得的软件。

输出文字一般使用CDC::BOOL TextOut( int x, int y, const CString& str )和CDC::int DrawText( const CString& str, LPRECT lpRect, UINT nFormat )两个函数,对TextOut 来讲只能输出单行的文字,而DrawText可以指定在一个矩形中输出单行或多行文字,并且可以规定对齐方式和使用何种风格。nFormat可以是多种以下标记的组合(利用位或操作)以达到选择输出风格的目的。

?DT_BOTTOM底部对齐 Specifies bottom-justified text. This value must be combined with DT_SINGLELINE.

?DT_CALCRECT计算指定文字时所需要矩形尺寸 Determines the width and height of the rectangle. If there are multiple lines of text, DrawText will use the width of the rectangle pointed to by lpRect and extend the base of the

rectangle to bound the last line of text. If there is only one line of text, DrawText will modify the right side of the rectangle so that it bounds the last character in the line. In either case, DrawText returns the height of the formatted text, but does not draw the text.

?DT_CENTER中部对齐 Centers text horizontally.

?DT_END_ELLIPSIS or DT_PATH_ELLIPSIS Replaces part of the given string with ellipses, if necessary, so that the result fits in the specified

rectangle. The given string is not modified unless the DT_MODIFYSTRING flag is specified.

You can specify DT_END_ELLIPSIS to replace characters at the end of the string, or DT_PATH_ELLIPSIS to replace characters in the middle of the string. If the string contains backslash (\) characters, DT_PATH_ELLIPSIS preserves as much as possible of the text after the last backslash.

?DT_EXPANDTABS Expands tab characters. The default number of characters per tab is eight.

?DT_EXTERNALLEADING Includes the font抯 external leading in the line height. Normally, external leading is not included in the height of a line of text.

?DT_LEFT左对齐 Aligns text flush-left.

?DT_MODIFYSTRING Modifies the given string to match the displayed text.

This flag has no effect unless the DT_END_ELLIPSIS or DT_PATH_ELLIPSIS flag is specified.

Note Some uFormat flag combinations can cause the passed string to be modified.

Using DT_MODIFYSTRING with either DT_END_ELLIPSIS or DT_PATH_ELLIPSIS may cause the string to be modified, causing an assertion in the CString override.

?DT_NOCLIP Draws without clipping. DrawText is somewhat faster when DT_NOCLIP is used.

?DT_NOPREFIX禁止使用&前缀 Turns off processing of prefix characters.

Normally, DrawText interprets the ampersand (&) mnemonic-prefix character as a directive to underscore the character that follows, and the

two-ampersand (&&) mnemonic-prefix characters as a directive to print a single ampersand. By specifying DT_NOPREFIX, this processing is turned off.

?DT_PATH_ELLIPSIS

?DT_RIGHT右对齐 Aligns text flush-right.

?DT_SINGLELINE单行输出 Specifies single line only. Carriage returns and linefeeds do not break the line.

?DT_TABSTOP设置TAB字符所占宽度 Sets tab stops. The high-order byte of nFormat is the number of characters for each tab. The default number of characters per tab is eight.

?DT_TOP定部对齐 Specifies top-justified text (single line only).

?DT_VCENTER中部对齐 Specifies vertically centered text (single line only).

?DT_WORDBREAK每行只在单词间被折行 Specifies word-breaking. Lines are automatically broken between words if a word would extend past the edge of the rectangle specified by lpRect. A carriage return杔inefeed sequence will also break the line.

在输出文字时如果希望改变文字的颜色,你可以利用CDC::SetTextColor( COLORREF crColor )进行设置,如果你希望改变背景色就利用CDC::SetBkColor( COLORREF crColor ),很多时候你可能需要透明的背景色你可以利用CDC::SetBkMode( int nBkMode )设置,可接受的参数有

?OPAQUE Background is filled with the current background color before the text, hatched brush, or pen is drawn. This is the default background mode.

?TRANSPARENT Background is not changed before drawing.

接下来讲讲如何创建字体,你可以创建的字体有两种:库存字体

CDC::CreateStockObject( int nIndex )和自定义字体。

在创建非库存字体时需要填充一个LOGFONT结构并使用CFont::CreateFontIndirect(const LOGFONT* lpLogFont ),或使用CFont::CreateFont( int nHeight, int nWidth, int nEscapement, int nOrientation, int nWeight, BYTE bItalic, BYTE bUnderline, BYTE cStrikeOut, BYTE nCharSet, BYTE nOutPrecision, BYTE nClipPrecision, BYTE nQuality, BYTE nPitchAndFamily, LPCTSTR lpszFacename )其中的参数和LOGFONT中的分量有一定的对应关系。下面分别讲解参数的意义:

nHeight字体高度(逻辑单位)等于零为缺省高度,否则取绝对值并和可用的字体高度进行匹配。

nWidth宽度(逻辑单位)如果为零则使用可用的横纵比进行匹配。

nEscapement出口矢量与X轴间的角度

nOrientation字体基线与X轴间的角度

nWeight字体粗细,可取以下值

bItalic是否为斜体

bUnderline是否有下划线

cStrikeOut是否带删除线

nCharSet指定字符集合,可取以下值

nOutPrecision输出精度

nClipPrecision剪辑精度,可取以下值

nQuality输出质量,可取以下值

?DEFAULT_QUALITY Appearance of the font does not matter.

?DRAFT_QUALITY Appearance of the font is less important than when PROOF_QUALITY is used. For GDI raster fonts, scaling is enabled. Bold, italic, underline, and strikeout fonts are synthesized if necessary.

?PROOF_QUALITY Character quality of the font is more important than exact matching of the logical-font attributes. For GDI raster fonts, scaling is disabled and the font closest in size is chosen. Bold, italic, underline, and strikeout fonts are synthesized if necessary.

nPitchAndFamily字体间的间距

lpszFacename指定字体名称,为了得到系统所拥有的字体可以利用EmunFontFamiliesEx。此外可以利用CFontDialog来得到用户选择的字体的LOGFONT数据。

最后我讲一下文本坐标的计算,利用CDC::GetTextExtent( const CString& str )可以得

到字符串的在输出时所占用的宽度和高度,这样就可以在手工输出多行文字时使用正确的行距。另外如果需要更精确的对字体高度和宽度进行计算就需要使用

CDC::GetTextMetrics( LPTEXTMETRIC lpMetrics ) 该函数将会填充TEXTMETRIC结构,该结构中的分量可以非常精确的描述字体的各种属性。

2.3 使用点,刷子,笔进行绘图

在Windows中画点的方法很简单,只需要调用COLORREF CDC::SetPixel( int x, int y, COLORREF crColor )就可以在指定点画上指定颜色,同时返回原来的颜色。COLORREF CDC::GetPixel( int x, int y)可以得到指定点的颜色。在Windows中应该少使用画点的函数,因为这样做的执行效率比较低。

刷子和画笔在Windows作图中是使用最多的GUI对象,本节在讲解刷子和画笔使用方法的同时也讲述一写基本作图函数。

在画点或画线时系统使用当前DC中的画笔,所以在创建画笔后必须将其选入DC才会在绘图时产生效果。画笔可以通过CPen对象来产生,通过调用CPen::CreatePen( int nPenStyle, int nWidth, COLORREF crColor )来创建。其中nPenStyle指名画笔的风格,可取如下值:

?PS_SOLID实线 Creates a solid pen.

?PS_DASH虚线,宽度必须为一 Creates a dashed pen. Valid only when the pen width is 1 or less, in device units.

?PS_DOT点线,宽度必须为一 Creates a dotted pen. Valid only when the pen width is 1 or less, in device units.

?PS_DASHDOT点划线,宽度必须为一 Creates a pen with alternating dashes and dots. Valid only when the pen width is 1 or less, in device units.

?PS_DASHDOTDOT双点划线,宽度必须为一 Creates a pen with alternating dashes and double dots. Valid only when the pen width is 1 or less, in device units.

?PS_NULL空线,使用时什么也不会产生 Creates a null pen.

?PS_ENDCAP_ROUND结束处为圆形 End caps are round.

?PS_ENDCAP_SQUARE结束处为方形 End caps are square.

nWidth和crColor为线的宽度和颜色。

刷子是在画封闭曲线时用来填充的颜色,例如当你画圆形或方形时系统会用当前的刷子对内部进行填充。刷子可利用CBrush对象产生。通过以下几种函数创建刷子:

?BOOL CreateSolidBrush( COLORREF crColor ); 创建一种固定颜色的刷子

?BOOL CreateHatchBrush( int nIndex, COLORREF crColor ); 创建指定颜色和网格的刷子,nIndex可取以下值:

?HS_BDIAGONAL Downward hatch (left to right) at 45 degrees

?HS_CROSS Horizontal and vertical crosshatch

?HS_DIAGCROSS Crosshatch at 45 degrees

?HS_FDIAGONAL Upward hatch (left to right) at 45 degrees

?HS_HORIZONTAL Horizontal hatch

?HS_VERTICAL Vertical hatch

?BOOL CreatePatternBrush( CBitmap* pBitmap ); 创建以8*8位图为模板的刷子

在选择了画笔和刷子后就可以利用Windows的作图函数进行作图了,基本的画线函数有以下几种

?CDC::MoveTo( int x, int y ); 改变当前点的位置

?CDC::LineTo( int x, int y ); 画一条由当前点到参数指定点的线

?CDC::BOOL Arc( LPCRECT lpRect, POINT ptStart, POINT ptEnd ); 画弧线

?CDC::BOOL Polyline( LPPOINT lpPoints, int nCount ); 将多条线依次序连接

基本的作图函数有以下几种:

?CDC::BOOL Rectangle( LPCRECT lpRect ); 矩形

?CDC::RoundRect( LPCRECT lpRect, POINT point ); 圆角矩形

?CDC::Draw3dRect( int x, int y, int cx, int cy, COLORREF clrTopLeft, COLORREF clrBottomRight ); 3D边框

?CDC::Chord( LPCRECT lpRect, POINT ptStart, POINT ptEnd ); 扇形

?CDC::Ellipse( LPCRECT lpRect ); 椭圆形

?CDC::Pie( LPCRECT lpRect, POINT ptStart, POINT ptEnd );

?CDC::Polygon( LPPOINT lpPoints, int nCount ); 多边形

对于矩形,圆形或类似的封闭曲线,系统会使用画笔绘制边缘,使用刷子填充内部。如果你不希望填充或是画出边缘,你可以选入空刷子(NULL_PEN)或是(NULL_BRUSH)空笔。

下面的代码创建一条两象素宽的实线并选入DC。并进行简单的作图:

{

...

CPen pen;

pen.CreatePen(PS_SOLID,2,RGB(128,128,128));

CPen* pOldPen=(CPen*)dc.SelectObject(&pen);

dc.SelectStockObject(NULL_BRUSH);//选入空刷子

dc.Rectangle(CRect(0,0,20,20));//画矩形

...

}

2.4 在窗口中绘制设备相关位图,图标,设备无关位图

在Windows中可以将预先准备好的图像复制到显示区域中,这种内存拷贝执行起来是非常快的。在Windows中提供了两种使用图形拷贝的方法:通过设备相关位图(DDB)和设备无关位图(DIB)。

DDB可以用MFC中的CBitmap来表示,而DDB一般是存储在资源文件中,在加载时只需要通过资源ID号就可以将图形装入。BOOL CBitmap::LoadBitmap( UINT nIDResource )可以装入指定DDB,但是在绘制时必须借助另一个和当前绘图DC兼容的内存DC来进行。通过CDC::BitBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc,

DWORD dwRop )绘制图形,同时指定光栅操作的类型。BitBlt可以将源DC中位图复制到目的DC中,其中前四个参数为目的区域的坐标,接下来是源DC指针,然后是源DC中的起始坐标,由于BitBlt为等比例复制,所以不需要再次指定长宽,(StretchBlt可以进行缩放)最后一个参数为光栅操作的类型,可取以下值:

?BLACKNESS输出区域为黑色 Turns all output black.

?DSTINVERT反色输出区域 Inverts the destination bitmap.

?MERGECOPY在源和目的间使用AND操作 Combines the pattern and the source bitmap using the Boolean AND operator.

?MERGEPAINT在反色后的目的和源间使用OR操作 Combines the inverted source bitmap with the destination bitmap using the Boolean OR operator.

?NOTSRCCOPY将反色后的源拷贝到目的区 Copies the inverted source bitmap to the destination.

?PATINVERT源和目的间进行XOR操作 Combines the destination bitmap with the pattern using the Boolean XOR operator.

?SRCAND源和目的间进行AND操作 Combines pixels of the destination and source bitmaps using the Boolean AND operator.

?SRCCOPY复制源到目的区 Copies the source bitmap to the destination bitmap.

?SRCINVERT源和目的间进行XOR操作 Combines pixels of the destination and source bitmaps using the Boolean XOR operator.

?SRCPAINT源和目的间进行OR操作 Combines pixels of the destination and source bitmaps using the Boolean OR operator.

?WHITENESS输出区域为白色 Turns all output white.

下面用代码演示这种方法:

CYourView::OnDraw(CDC* pDC)

{

CDC memDC;//定义一个兼容DC

memDC.CreateCompatibleDC(pDC);//创建DC

CBitmap bmpDraw;

bmpDraw.LoadBitmap(ID_BMP) ;//装入DDB

CBitmap* pbmpOld=memDC.SelectObject(&bmpDraw) ;

//保存原有DDB,并选入新DDB入DC

pDC->BitBlt(0,0,20,20,&memDC,0,0,SRCCOPY) ;

//将源DC中(0,0,20,20)复制到目的DC(0,0,20,20)

pDC->BitBlt(20,20,40,40,&memDC,0,0,SRCAND);

//将源DC中(0,0,20,20)和目的DC(20,20,40,40)中区域进行AND操作memDC.SelectObject(pbmpOld) ;//选入原DDB

}

(图标并不是一个GDI对象,所以不需要选入DC)在MFC中没有一个专门的图标类,因为图标的操作比较简单,使用HICON CWinApp::LoadIcon( UINT nIDResource )或是HICON CWinApp::LoadStandardIcon( LPCTSTR lpszIconName ) 装入后就可以利用BOOL CDC::DrawIcon( int x, int y, HICON hIcon )绘制。由于在图标中可以指定透明区域,所以在某些需要使用非规则图形而且面积不大的时候使用图标会比较简单。下面给出简单的代码:

OnDraw(CDC* pDC)

{

HICON hIcon1=AfxGetApp()->LoadIcon(IDI_I1);

HICON hIcon2=AfxGetApp()->LoadIcon(IDI_I2);

pDC->DrawIcon(0,0,hIcon1);

pDC->DrawIcon(0,40,hIcon2);

DestroyIcon(hIcon1);

DestroyIcon(hIcon2);

}

同样在MFC也没有提供一个DIB的类,所以在使用DIB位图时我们需要自己读取位图文件中的头信息,并读入数据,并利用API函数StretchDIBits绘制。位图文件以BITMAPFILEHEADER 结构开始,然后是BITMAPINFOHEADER结构和调色版信息和数据,其实位图格式是图形格式中最简单的一种,而且也是Windows可以理解的一种。我不详细讲解DIB位图的结构,提供一个CDib类供大家使用,这个类包含了基本的功能如:Load,Save,Draw。DownLoad CDib 4K

2.5 使用各种映射方式

所谓的映射方式简单点讲就是坐标的安排方式,系统默认的映射方式为MM_TEXT即X坐标向右增加,Y坐标向下增加,(0,0)在屏幕左上方,DC中的每一点就是屏幕上的一个象素。也许你会认为这种方式下是最好理解的,但是一个点和象素对应的关系在屏幕上看来是正常的,但到了打印机上就会很不正常。因为我们作图是以点为单位并且打印机的分辨率远远比显示器高(800DPI 800点每英寸)所以在打印机上图形看起来就会很小。这样就需要为打印另做一套代码而加大了工作量。如果每个点对应0.1毫米那么在屏幕上的图形就会和打印出来的图形一样大小。

通过int CDC::SetMapMode( int nMapMode )可以指定映射方式,可用的有以下几种:

MM_HIENGLISH每点对应0.001英寸 Each logical unit is converted to 0.001 inch. Positive x is to the right; positive y is up.

?MM_HIMETRIC每点对应0.001毫米 Each logical unit is converted to 0.01 millimeter. Positive x is to the right; positive y is up.

?MM_LOENGLISH每点对应0.01英寸 Each logical unit is converted to 0.01 inch.

Positive x is to the right; positive y is up.

?MM_LOMETRIC每点对应0.001毫米 Each logical unit is converted to 0.1 millimeter. Positive x is to the right; positive y is up.

?MM_TEXT象素对应 Each logical unit is converted to 1 device pixel.

Positive x is to the right; positive y is down.

以上几种映射默认的原点在屏幕左上方。除MM_TEXT外都为X坐标向右增加,Y坐标向上增加,和自然坐标是一致的。所以在作图是要注意什么时候应该使用负坐标。而且以上的映射都是X-Y等比例的,即相同的长度在X,Y轴上显示的长度都是相同的。

DownLoad Sample

另外的一种映射方式为MM_ANISOTROPIC,这种方式可以规定不同的长宽比例。在设置这中

映射方式后必须调用CSize CDC::SetWindowExt( SIZE size )和CSize

CDC::SetViewportExt( SIZE size )来设定长宽比例。系统会根据两次设定的长宽的比值来确定长宽比例。下面给出一段代码比较映射前后的长宽比例:

OnDraw(CDC* pDC)

{

CRect rcC1(200,0,400,200);

pDC->FillSolidRect(rcC1,RGB(0,0,255));

pDC->SetMapMode(MM_ANISOTROPIC );

CSize sizeO;

sizeO=pDC->SetWindowExt(5,5);

TRACE("winExt %d %d\n",sizeO.cx,sizeO.cy);

sizeO=pDC->SetViewportExt(5,10);

TRACE("ViewExt %d %d\n",sizeO.cx,sizeO.cy);

CRect rcC(0,0,200,200);

pDC->FillSolidRect(rcC,RGB(0,128,0));

}

上面代码在映射后画出的图形将是一个长方形。

DownLoad Sample

最后讲讲视原点(viewport origin),你可以通过调用CPoint CDC::SetViewportOrg( POINT point )重新设置原点的位置,这就相对于对坐标进行了位移。例如你将原点设置在(20,20)那么原来的(0,0)就变成了(-20,-20)。

快速记忆的方法及技巧

快速记忆的方法及技巧 首先,要了解最佳记忆条件。一个人若想有良好记忆和较高记忆效率,必须具备以下条件: ◆注意力集中注意力是记忆成功的必要条件,是一切认识过程的开端,是心灵的门户。从心理学角度分析,学习时注意力集中,大脑细胞兴奋点强烈,对事物的印象深刻,易记忆。 ◆记忆目标明确记忆的目标越明确,越具体,记忆的效果就越好。心理学实验证明,两组学生同时看一篇课文,对甲组提出背诵要求,对乙组则不提任何要求,结果是甲组的记效率比乙组高两倍。因此,学习时,强迫自己记住该记住的东西,执意不忘掉它,就会达到最佳记忆效果。 ◆丰富的阅历心理学上有一种迁移理论,即学习某一种知识或技能对另一种知识或技能会产生影响。该规律告诉我们,丰富的阅历对提高记忆效率有着重要的作用。俗话说:脑子越用越灵,越不用越笨。 ◆愉快而稳定的情绪稳定的情绪是记忆的关键,试想一个刚刚与别人生了气的人,其情绪极不稳定时就让他记某些材料,那么他什么也记不住。当大脑皮层的活动稳定时,很容易接受外界传入的信息,并形成清晰的记忆。 ◆适当的营养脑生理的研究表明,记忆力与大脑中的神经化学物质乙酸胆碱的含量有关,而胆碱主要存在于鱼、肉、蛋类中。 ◆合理的休息过度疲劳会减弱脑细胞的活动能力,甚至导致失眠和记忆力减退。因此学习时要劳逸结合,学会休息,学会用脑,避免“开夜车”。 ◆识记要有积极的态度识记积极性水平不同,独立性不同,记忆的效果是不一样的。因此,记忆时可将所记的材料作某种分类。找出它们间的联系,或列成提纲,绘成图表,编成顺口溜等,均可使记忆效率提高。 ◆材料的组织性心理学实验表明,记忆的内容永远填不满大脑,但在短时间的记忆活动时,大脑接收的信息量一般不超过七个单位。不过这“七”可是七个单个体也可是七个词,还可是众多单个体所组成的七个组块。因此,将材料加以组织可加大记忆容量,提高记忆效率。 了解了记忆条件之后,就要掌握一些记忆的基本方法: ◆尽可能动员多种感官参加学习活动 心理学研究表明,人在学习时,只听能记住60%,只看能记住70%,而看、听、

C语言-基础教程-C语言整型数据

C语言-基础教程-C语言整型数据 考试大计算机等级站整理: 2.3.1 整型常量 整型常量及整常数。它可以是十进制、八进制、十六进制数字表示的整数值。十进制常数的形式是: d i g i t s s 这里d i g i t s可以是从0到9的一个或多个十进制数位,第一位不能是0。八进制常数的形式是: 0 d i g i t s s 在此,d i g i t s可以是一个或多个八进制数(0~7之间),起始0是必须的引导符。 十六进制常数是下述形式: 0 x h d i g i t s0 X h d i g i t s 这里h d i g i t s可以是一个或多个十六进制数(从0~9的数字,并从"a"~" "f"的字母)。 引导符0是必须有的,X即字母可用大写或小写。注意,空白字符不可出现在整数数字之间。表2 - 3列出了整常数的形式。 整常数在不加特别说明时总是正值。如果需要的是负值,则负号"-"必须放置于常数表达式的前面。 每个常数依其值要给出一种类型。当整常数应用于一表达式时,或出现有负号时,常数类型自动执行相应的转换,十进制常数可等价于带符号的整型或长整型,这取决于所需的常数的尺寸。 八进制和十六进制常数可对应整型、无符号整型、长整型或无符号长整型,具体类型也取决于常数的大小。如果常数可用整型表示,则使用整型。如果常数值大于一个整型所

能表示的值,但又小于整型位数所能表示的数,则使用无符号整型。同理,如果一个常数比无符号整型所表示的值还大,则它为长整型。如果需要,当然也可用无符号长整型。 在一个常数后面加一个字母l或L,则认为是长整型。如1 0 L、7 9 L、0 1 2 L、0 11 5 L、0 X A L、0 x 4 f L等。 2.3.2 整型变量 前面已提到,C规定在程序中所有用到的变量都必须在程序中指定其类型,即"定义"。这是和B A S I C、F O RT R A N不同的,而与P a s c a l相似。 运行结果为: R U N a u=22, b u=-1 4 可以看到不同类型的整型数据可以进行算术运算。在本例中是i n t型数据与unsingned int型数据进行相加减运算。

快速记忆方法

快速记忆方法 2、编写故事法来记忆英语单词:现有如下一些单词:joab(英人男子名),joan(英人女子名),load (担子),soap(肥皂),road(道路),goat(山羊),moan(呻吟),loan(借款),boat(上衣),(小船),汉义也提供给大家。 你们能不能很快记住它们呢?可能有人说:“这么多单词,怎能很快记得全呢?请同志们利用这些词象下边这样编个小故事,试试看,记忆速度是不是能快一些。 一天,joab 挑着担子(load) ,担子里装满了肥皂(soap) ,他准备到市场上去卖。 大路(road) 上风光美极了:山羊(goat) 在草地上吃草,弯弯的小河流向远方,一条小船(boat) 从河面上划来,仔细一看,原来上面坐着joab 的老同学joan 。 怎么,她今天竟面带愁容,呻吟(moan) 不已呢?仔细一问方才得知。 joan 遇到强盗,借来(loa n) 的钱连同父亲买给的上衣(coat) 都被掠走了。 没有办法,joab 逃到船(boat) 上。 适才见到了joab 才投奔而来。 joab 见到此情此景马上安慰joan 道:“我们快去报案,捉拿强盗。 于是二人去了。 由于把单词放到故事中去记就有了时间、地点、人物、情节,即

有了脉络。 这比分散地去记那些零散、孤立的单词容易得多了。 科学实验表明,这种记忆方法比一般的记忆方法效率高出7 倍,在复习单词的时候使用是很有效率的。 4 、定位联想法:所谓定位联想法,通俗地讲,既是在自己的“记忆仓库中准备好一系列位置固定的“货架,当识记一系列材料时,如名词、短语、条文、事物等,可以按顺序往“货架上存放,以保证提取时有条不紊。 定位联想法是以奇特联想法为基础的,其不同之处只是在于定位联想法有自己预定的秩序,即定位词。 定位用的“货架可以有多种形式,例如:可以用人体器官:头发、眼睛、耳朵、舌头等;可以用家庭设施:衣柜、沙发、书橱、电视等;可以用常用词组:工、农、商、学、兵;东、南、西、北等。 5、渐近记忆法:在自学或学习中,如碰到解决不了的问题或不明白又无处询问的问题,可暂时放一旁不去理它,继续前进,一段时间之后,随着知识地增加,问题可能会得到自然的解决。 6、逻辑记忆法A:谐音利用字与字或词与词的读音相似进行记忆。 马克思诞辰:1818.5.5 马克思一巴掌一巴掌打得资本家呜呜哭;三国称帝时间:221刘备喝了二两药(一),229孙权喝了二两酒;唐朝建国时间:618李渊见糖(建唐)留一把(六一八);珠峰高度:8848 爬爬试吧。 B:歌诀记忆法如历史歌:夏商和西周,东周分两短:春秋和战国。

简单有效的快速记忆方法

简单有效的快速记忆方法 下面是为大家推荐的简单有效的快速记忆方法,欢迎参阅!简单有效的快速记忆方法 1.列表记忆法把所记忆的材料或事物排列成表加以对照、记忆的方法。 此法可以广泛应用于各种知识的记忆。 表者明也,表的作用在于提纲挈领地表列事物,以便一目了然地看清事理;可以把分散、零碎的材料组织起来,从整体上掌握记忆对象;可以把所要记忆的材料互相比较和分类,以便更清楚地看到表列内容的联系和区别的特点,从特征上记忆对象;还可以把先后学习的材料顺序排列、系统组合,从规律上掌握记忆对象。 因而,列表记忆法是自古以来就被广泛地采用而且记忆效果甚佳的记忆方法。 司马迁在《史记》中用了《三代世表》、《十二诸侯年表》等十表,目的就在于方便比较记忆。 马克思在晚年作了一部很详尽的世界史年表,恩格斯把它定名为《编年史》,用以把分散的材料组织起来,方便记忆。 鲁迅做《贾氏谱大要》表,使《红楼梦》中贾家诸多人物的复杂关系一目了然,十分好记。 有许多同学在学习过程中,善于将相关的材料列成表格一齐记忆,收到了很好的效果。 2.干扰变刺激记忆法在学习记忆时把本来使注意力分散、妨碍正常

记忆功能的消极因素,变为刺激记忆力的诱导物,以突破记忆上的障碍,增强记忆效果的方法。 这种方法多用于自学时等等易受干扰的环境。 记忆对多数人来说也许并非一件令人开心的事情,因为记忆会增加大脑的工作负担,?是非常辛苦的。 每当大脑开始记忆时,?往往会不由自主地浮现出自己更爱做的事,?造成精力分散,妨碍正常的记忆。 ?这些干扰因素使记忆的困难又多了一层,因此需要排除这些干扰。 明智而机巧的办法是变消极因素为积极因素,?利用这些杂念作为刺激记忆的诱导物,变阻力为动力,达到增强记忆的目的。 如当学习记忆时想喝茶休息,想吃巧克力,想到外面散步,那么不妨把这些杂念作为达到某一记忆目标之后的奖品,在完成一段学习,达到一个记忆目标时,喝茶休息一下,在达到第二个目标时奖赏自己吃块巧克力。 这样做虽不能算作高尚的表现,好象是哄小孩的把戏,但实际上却有惊人的记忆效果。 3.缩略记忆法在所要记忆的材料中,浓缩概括出略语作为提示,做到以略语带内容的记忆方法。 缩略可以简化、概括记忆的内容,减轻大脑的负担;缩略语具有提示性,可通过记住的缩略语这一中介联想到它所概括的内容。 如学习化学中"氧化-还原"反应时,搞清电子得失与"氧化-还原"的

Object-C 经典入门教程

Object-C 入门教程 分类:Sip&asterisk2009-05-04 16:34 16409人阅读评论(2) 收藏举报大纲 o开始吧下载这篇教学 o设定环境 o前言 o编译 hello world o创建 Classes@interface o@implementation o把它们凑在一起 o详细说明...多重参数 o建构子(Constructors) o访问权限 o Class level access o异常情况(Exceptions)处理 o继承、多型(Inheritance, Polymorphism)以及其他面向对象功 能id 型别 o继承(Inheritance) o动态识别(Dynamic types) o Categories o Posing o Protocols o内存管理Retain and Release(保留与释放) o Dealloc o Autorelease Pool o Foundation Framework ClassesNSArray o NSDictionary ?优点与缺点 ?更多信息 开始吧 下载这篇教学 ?所有这篇初学者指南的原始码都可以由objc.tar.gz下 载。这篇教学中的许多范例都是由 Steve Kochan 在 Programming in Objective-C. 一书中撰写。如果你想得到更 多详细信息及范例,请直接参考该书。这个网站上登载的所有 范例皆经过他的允许,所以请勿复制转载。 设定环境 ?Linux/FreeBSD: 安装GNUStep为了编译 GNUstep

应用程序,必须先执行位于 /usr/GNUstep/System/Makefiles/GNUstep.sh 的 GNUstep.sh 这个档案。这个路径取决于你的系统环境, 有些是在 /usr, some /usr/lib,有些是/usr/local。 如果你的 shell 是以 csh/tcsh 为基础的 shell,则应 该改用 GNUStep.csh。建议把这个指令放在 .bashrc 或 .cshrc 中。 ?Mac OS X: 安装XCode ?Windows NT 5.X: 安装cygwin或mingw,然后安装 GNUStep 前言 ?这篇教学假设你已经有一些基本的 C 语言知识,包括 C 数 据型别、什么是函式、什么是回传值、关于指针的知识以及基 本的 C 语言内存管理。如果您没有这些背景知识,我非常建议 你读一读 K&R 的书:The C Programming Language(译注:台 湾出版书名为 C 程序语言第二版)这是 C 语言的设计者所写 的书。 ?Objective-C,是 C 的衍生语言,继承了所有 C 语言的特 性。是有一些例外,但是它们不是继承于 C 的语言特性本身。 ?nil:在 C/C++ 你或许曾使用过 NULL,而在 Objective-C 中则是 nil。不同之处是你可以传递讯息给 nil(例如 [nil message];),这是完全合法的,然而你却不能对 NULL 如法炮 制。 ?BOOL:C 没有正式的布尔型别,而在 Objective-C 中也不 是「真的」有。它是包含在 Foundation classes(基本类别库) 中(即 import NSObject.h;nil 也是包括在这个头文件内)。 BOOL 在 Objective-C 中有两种型态:YES 或 NO,而不是 TRUE 或 FALSE。 ?#import vs #include:就如同你在 hello world 范例中看 到的,我们使用了#import。#import 由 gcc 编译程序支援。 我并不建议使用 #include,#import基本上跟 .h 档头尾的 #ifndef #define #endif 相同。许多程序员们都同意,使用这 些东西这是十分愚蠢的。无论如何,使用 #import 就对了。这 样不但可以避免麻烦,而且万一有一天 gcc 把它拿掉了,将会 有足够的 Objective-C 程序员可以坚持保留它或是将它放回 来。偷偷告诉你,Apple 在它们官方的程序代码中也使用了 #import。所以万一有一天这种事真的发生,不难预料 Apple 将 会提供一个支持 #import 的 gcc 分支版本。 ?在 Objective-C 中, method 及 message 这两个字是可以 互换的。不过messages 拥有特别的特性,一个 message 可以 动态的转送给另一个对象。在Objective-C 中,呼叫对象上的 一个讯息并不一定表示对象真的会实作这个讯息,而是对象知 道如何以某种方式去实作它,或是转送给知道如何实作的对象。

谐音快速记忆法6

abandon [[5bAnd[n] vt.丢弃;放弃,抛弃记忆方法: a(一个) bandon(笨蛋) 笨蛋当然会四 被女朋友丢弃abide [[5baid] vt.遵守vt.忍受记忆方法: a,d,c,d,e——只要把c变成I 就成本单词但是要i遵守c,i是不会忍受的absurd [[b5s[:d] a.不合理的,荒唐的记忆方法: 【谐音】爱不死的——热恋中的人得出荒谬的结论abnormal [Ab5nC:m[l] a.不正常的;变态的记忆方法: a (一个) b (不) normal(正常的) 一个不正常的——不正常的,变态的abundant [[5bQnd[nt] a.丰富的;大量的记忆方法: a + bund + ant bund 谐音"磅" 一磅的蚂蚁——大量的,丰富的abuse [[5bju:z] vt./n.滥用,妄用;虐待,凌辱记忆方法: 一,a 爱b 不use 使用爱不能滥用;爱是不能被虐待二,ab——above超过过量的用——滥用,虐待academy [[5kAd[mi] n.研究院;学会记忆方法: academy是地名,雅典市郊一花园名, 因为哲学家柏拉图在那里讲学并创办了一所著名学院取名为academy后被泛指学校,研究院等w 1 academic [Ak[5demik] a.学院的;学术的记忆方法: ic:形容词后缀,可想象成I see ass [As] n.驴;傻瓜,蠢笨的人记忆方法: as——象……一样s——死人ass——笨得象死人——驴;傻瓜,蠢笨的人assassinate [[5sAsineit] vt.暗杀,行刺;中伤记忆方法: ass + ass + in + ate 两头毛驴,在里面把人咬死(暗杀) access [5Akses] n.接近;入口记忆方法: access accommodate [[9kCm[5deiF[n] 有头驴接近入口n.供应;给提供住宿记忆方法: a cco mmo date 把cco mmo 看成一对情侣,date:约会一对情侣约会,给他们提供住宿真是太好了accommodation [[9kCm[5deiF[n] n.招待设备;预定铺位记忆方法: accommodate的名词形式accompany [[5kQmp[ni] vt.陪伴,伴随;为……伴奏记忆方法: company:公司accompany一个公司伴随着你accord [[5kC:d] vi.一致的;符合的记忆方法: 观察——a,b,c,or d 把上面的b换成c就与accord一致的, 符合的了2 accordance [[5kC:d[ns] n.一致,和谐;符合记忆方法: accord + dance accord 跳个舞就变成了名词account [[5kaunt] n.叙述;解释;帐目记忆方法: 1,a(c) 表示一个人count: 数一个人数帐

三十六计,快速记忆方法,倒背如流

三十六计,快速记忆,倒背如流 第1计,瞒天过海:看到1,我们就联想到树,然后想像一棵大树在海里漂着,我们躲在树干里面,老天爷也看不到我们,这样,我们就可以瞒着天、度过海了。 第2计,围魏救赵:看到2,我们就联想到鸭子,然后想像无数只鸭子把魏国围住,因为魏国把赵国的公主给抢走了,赵国的鸭子被激怒了,于是把魏国围住,要求交出公主。 第3计,借刀杀人:看到3,我们就联想到耳朵,然后想像一个人借了一把生锈的菜刀,想去杀另一个人,结果人没杀到,反而不小心把自己的耳朵给砍了下来。 第4计,以逸待劳:看到4,我们就联想到红旗,然后想像一群人在进行登山比赛,而你则在山顶上扛着红旗,安逸地等待着那些爬上山来的疲劳的人们。 第5计,趁火打劫:看到5,我们联想到勾子,然后想像一家珠宝店着火了,你过去趁火打劫,用一把长勾子勾了一串珠宝然后赶快逃走。 第6计,声东击西:看到6,我们联想到勺子,然后想像自己左右手各拿着一把勺子,左手的勺子上盛着一个大冬瓜,你把这个大冬瓜用力地勺起来,而右手则用勺子狠狠地敲打着一个大西瓜,这个动作叫“升冬瓜、击西瓜”(声东击西)。 第7计,无中生有:看到7,我们联想到拐杖,然后想像一个老人正拄着拐杖走路,忽然一条肥大的蜈蚣爬到他的脚边,他赶紧用拐杖往这条蜈蚣的身体中间一戳,结果肥大的蜈蚣冒出许多油来,这叫“蜈中生油”(无中生有)。 第8计,暗度陈仓:看到8,我们联想到葫芦,你想要暗中度过那个有很多敌人守卫的仓库,就想到了一个办法,藏在一个大葫芦里面,然后慢慢地滚了过去。 第9计,隔岸观火:看到9,我们联想到猫,想到这个世界上有一只最懒的咖啡猫,它正懒洋洋地坐在江边,看到对岸一处房子着火了,明明知道是自己家,也懒得去救火。 第10计,笑里藏刀:看到10,我们联想到棒球,当你在打棒球的时候看到有人向你阴阴地笑,你可就要小心了,因为他可能是笑里藏刀,准备对你使坏。 第11计,李代桃僵:一条领带(李代)绑在筷子上,筷子上还插着一个僵硬了的桃子(桃僵)。第12计,顺手牵羊:一个妇女抱着婴儿到邻居家去串门,然后趁别人不注意的时候把邻居的羊牵走了。 13-医生-打草惊蛇:医生要去采草药,在打草的时候把蛇惊出来了。 14-钥匙-借尸还魂:有个人拿了把钥匙打开了医院的停尸间,偷偷借了一具尸体来还魂。; 15-鹦鹉-调虎离山:鹦鹉接到命令把老虎引出了山。 16-杨柳-欲擒故纵:把敌人抓住绑到了杨柳树上,然后又把他放了,为了要抓住他的同伙所以先把他给放了。 17-荔枝-抛砖引玉:把一串荔枝和一块砖头一起扔出去,一会儿之后,砖头上就多了一块玉。 18-篱笆-擒贼擒王:用篱笆把一群贼围住,慢慢缩小包围圈,值得把这群贼的头领捉住。19-泥鳅-釜底抽薪:泥鳅从水中钻到釜底把薪抽走了。 20-耳环-浑水摸鱼:想要浑水摸鱼,却摸到了一对耳环。 21-鳄鱼-金蝉脱壳:一只鳄鱼咬住了一只蝉,想把它吞进肚子里,结果蝉把自己的壳脱掉,然后逃走了。 22-鸳鸯-关门捉贼:一对鸳鸯跑到人的家里,想偷吃的,但被人把门关住,捉住了。 23-和尚-远交近攻:少林寺的和尚们喜欢出远们去交游,同时又喜欢跟附近的寺庙相互攻击、打架。

51单片机C语言入门教程详细解说

单片机c语言入门 相信很多爱好电子的朋友,对单片机这个词应该都不会陌生了吧。不过有些朋友可能只听说他叫单片机,他的全称是什么也许并不太清楚, 更不用说他的英文全称和简称了。单片机是一块在集成电路芯片上集成了一台有一定规模的微型计算机。简称为:单片微型计算机或单片机 (Single Chip Computer)。单片机的应用到处可见,应用领域广泛,主要应用在智能仪表、实时控制、通信、家电等方面。不过这一切都没 什么关系,因为我(当然也包括任何人)都是从不知道转变成知道的,再转变成精通的。现在我只想把我学习单片机的经历,详细地讲叙给大 家听听,可能有些大虾会笑话我,想:那么简单的东西还在这里卖弄。但是你错了,我只是把我个人学习的经历讲述一遍而已,仅仅对那些想 学习单片机,但又找不到好方法或者途径的朋友,提供一个帮助,使他们在学习过程中,尽量少走些弯路而已! 首先,你必须有学习单片机的热情,不是说今天去图书馆看了一个下午关于单片机的书,而明天玩上半天,后天就不知道那个本书在讲什 么东西了。还是先说说我吧,我从大二的第一个学期期末的时候才开始接触单片机,但在这之前,正如上面所说的:我知道有种芯片叫单片机, 但是具体长成什么样子,却一点也不知道!看到这里很多朋友一定会忍不住发笑。嘿嘿,你可千万别笑,有些大四毕业的人也同样不知道单片 机长成什么样子呢!而我对单片机的痴迷更是常人所不能想象的地步,大二的期末考试,我全放弃了复习,每当室友拿着书在埋头复习的时候, 我却捧着自己从图书馆借的单片机书在那看,虽然有很多不懂,但是我还是坚持了下来,当时我就想过,为了单片机值不值得我这样去付出, 或许这也是在一些三流学校的好处吧,考试挂科后,明年开学交上几十元一门的补考费,应该大部分都能过了。于是,我横下一条心,坚持看 我的单片机书和资料。 当你明白了单片机是这么一回事的时候,显而易见的问题出来了:我要选择那种语言为单片机编写程序呢?这个问题,困扰了我好久。具 体选择C51还是A51呢?汇编在我们大二之前并没有开过课,虽然看着人家的讲解,很容易明白单片机的每一时刻的具体工作情况,但是一合上 书或者资料,自己却什么也不知道了,根本不用说自己写程序了。于是,我最终还是决定学C51,毕竟C51和我们课上讲的C语言,有些类似, 编程的思想可以说是相通的。而且C51还有更大的优点就是编写大程序时的优越性更不言而喻,当然在那时,我并没有想的那么深远,C51的特 点,还是在后来的实践过程中,渐渐体会到的!朋友如果你选择了C51,那么请继续往下看,如果你选择了A51,那么你可以不要看了!因为下面讲 的全是C方面的,完全在浪费你的时间! 呵呵^_^ 第二,既然你想学好单片机,你必须得舍得花钱,如果不买些芯片回来自己动手焊焊拆拆的(但是在后期会介绍给大家一个很好用的硬件 仿真软件,并不需要你用实验板和仿真器了,直接在你的PC上完成,但是软件毕竟是软件,从某个特定的意义上来说是并不能代替硬件的),即使

汉语拼音的快速记忆方法

汉语拼音的快速记忆方法 学习好汉语拼音,首先要记住,下面是由给大家带来关于汉语拼音的快速记忆方法,希望对大家有帮助!汉语拼音的快速记忆方法1、观图法语文课本上有许多情景图,如苏教版实验教材小学语文第一册拼音单元第一课中,出现的画面为农村一角。 整个画面涉及“ a“o“ e三个单韵母。 在此情境图里,阿姨的“阿是提示“ a的音,公鸡喔喔啼的“喔是提示“o的音,池塘中游动的鹅的“鹅是提示“ e的音,鹅的翅膀提示的是“ e 形。 通过课文提供的情境图,同学们就能形象直观地掌握“ a“o“ e 。 所以同学们在学习中,应充分利用课文的插图,抓住插图所具有的“图表音“图表形的特点,来掌握所学拼音字母。 2、实物帮助法用实物来记忆某些字母的音和形。 例如,学习声母“f和“t 时,“f和“t 的形像一根带短柄的弯头拐杖。 拐杖拄地可表“f,拐杖竖直举起可表“t",所以记住弯头拐杖,就记住声母“f和“t的形。 3、学动物鸣叫法有些拼音字母的发音像某些动物的叫声。 如,学习复韵母ei时,图上画的是一个小男孩正在喂小羊吃草,小羊“咩咩叫着走过来吃草,“ei发音就是小羊“咩咩叫的声音。 还有公鸡的啼声,就是“o的发音声。 同学们一边做有趣的表演,记住了“ei “o等韵母的读音,这样学

得快,效果好。 4、手指操练法手指操练法简单易学,在手指活动中记住字母的形状。 如:左手拇指和食指一弯就成o。 松开一点就是c,再加上右手食指和拇指就成g,两个食指交叉就是x,c中加右手食指就是e,等等。 可以同桌配合,一个做手型,一个发音,玩得愉快,练得高兴,这样做,同学们既动眼、动口、动脑、动手,又发展了口语交际的能力。 5.游戏法可把有趣的游戏同拼音学习结合起来。 如“钓鱼游戏:拼音卡片别一个回形针,另外做几个钓鱼竿,用小磁铁石作鱼钩系在线的下端,把卡片当鱼撒在桌上,请几个同学上来,老师或家长报一个音节,学生就钓那个音节,看谁先钓上来。 还有像“找朋友“猜谜语等游戏。 6、儿歌诵读法把读儿歌和学拼音结合起来。 例如:“听广播bbb,爬山坡ppp,两个门洞mmm,一根拐棍fff。 左下半圆ddd,鱼儿跃起ttt,一个门洞nnn,一根小棍lll。 小鸽子ggg,小蝌蚪kkk,一把椅子hhh,一只母鸡jjj。 7个气球qqq,切西瓜xxx,像个2字zzz,小刺猬ccc。 小蚕吐丝sss,织毛衣zhzhzh,吃东西chchch。 石狮子shshsh,一轮红日rrr,一个树杈yyy,一只乌鸦www。

级英语单词快速记忆法

示例: abandon vt.丢弃;放弃,抛弃[wiki]记忆[/wiki]方法:(一个)(笨蛋)笨蛋当然会被女朋友丢弃 abide vt.遵守 vt.忍受记忆方法:a、d、c、d、e——只要把c变成I就成本单词但是要i遵守c,i是不会忍受的 absurd a.不合理的,荒唐的记忆方法:【谐音】爱不死的——热恋中的人得出荒谬的结论 abnormal a.不正常的;变态的记忆方法:a (一个) b (不) normal(正常的)一个不正常的——不正常的,变态的 abundant a.丰富的;大量的记忆方法: a + bund + ant bund 谐音“磅”一磅的蚂蚁——大量的、丰富的 abuse vt./n.滥用,妄用;虐待,凌辱记忆方法:一、a 爱 b 不 use 使用爱不能滥用;爱是不能被虐待二、ab——above超过过量的用——滥用、虐待academy n.研究院;学会记忆方法:academy是地名,雅典市郊一花园名,因为哲学家柏拉图在那里讲学并创办了一所著名学院取名为academy后被泛指学校,研究院等academic a.学院的;学术的记忆方法:ic:形容词后缀,可想象成 I see ass n.驴;傻瓜,蠢笨的人记忆方法:as——象……一样 s——死人ass——笨得象死人——驴;傻瓜,蠢笨的人 assassinate vt.暗杀,行刺;中伤记忆方法:ass + ass + in + ate 两头毛驴,在里面把人咬死(暗杀) access n.接近;入口记忆方法:access 有头驴接近入口 accommodate n.供应;给提供住宿记忆方法:a cco mmo date把 cco mmo 看成一对情侣,date:约会一对情侣约会,给他们提供住宿真是太好了 accommodation n.招待设备;预定铺位记忆方法:accommodate的名词形式accompany vt.陪伴、伴随;为……伴奏记忆方法:company:公司accompany一个公司伴随着你 accord vi.一致的;符合的记忆方法:观察——a、b、c、or d 把上面的b换成c 就与accord一致的、符合的了 accordance n.一致,和谐;符合记忆方法:accord + dance accord 跳个舞就变成了名词 account n.叙述;解释;帐目记忆方法:1、a(c) 表示一个人 count: 数一个人数帐目 2、尔康的解释和叙述,紫薇都不满意 accuracy n.准确(性);准确度记忆方法:爱扣若细——不放过细小的东西——准确性accurate a.准确的,正确无误的记忆方法:ate为形容词后缀,表示“具有……的性质” accuse vt.指责记忆方法:accuse (不当的)使用被指责 accustomed a.惯常的;习惯的记忆方法: custom——习惯、习俗我客思通——我的客人想通了什么入乡随俗 acid n.酸,酸性物质 a.酸的记忆方法:爱睡的——酸吃多了爱睡觉acquaintance n.认识;了解;熟人记忆方法:a 一个 cquaintance 谐音:快疼死一个快疼死的熟人 acquire vt.取得;获得;学到记忆方法:快了——考完四级就快获得学位了 acre n.英亩(=亩) 记忆方法:acre adapt vt.使适应,使适合;改编 vi.适应记忆方法: t——他[拼音]ta逮扑他——

快速记忆的方法及技巧

快速记忆的方法及技巧-标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

快速记忆的方法及技巧 首先,要了解最佳记忆条件。一个人若想有良好记忆和较高记忆效率,必须具备以下条件: ◆注意力集中注意力是记忆成功的必要条件,是一切认识过程的开端,是心灵的门户。从心理学角度分析,学习时注意力集中,大脑细胞兴奋点强烈,对事物的印象深刻,易记忆。 ◆记忆目标明确记忆的目标越明确,越具体,记忆的效果就越好。心理学实验证明,两组学生同时看一篇课文,对甲组提出背诵要求,对乙组则不提任何要求,结果是甲组的记效率比乙组高两倍。因此,学习时,强迫自己记住该记住的东西,执意不忘掉它,就会达到最佳记忆效果。 ◆丰富的阅历心理学上有一种迁移理论,即学习某一种知识或技能对另一种知识或技能会产生影响。该规律告诉我们,丰富的阅历对提高记忆效率有着重要的作用。俗话说:脑子越用越灵,越不用越笨。 ◆愉快而稳定的情绪稳定的情绪是记忆的关键,试想一个刚刚与别人生了气的人,其情绪极不稳定时就让他记某些材料,那么他什么也记不住。当大脑皮层的活动稳定时,很容易接受外界传入的信息,并形成清晰的记忆。 ◆适当的营养脑生理的研究表明,记忆力与大脑中的神经化学物质乙酸胆碱的含量有关,而胆碱主要存在于鱼、肉、蛋类中。 ◆合理的休息过度疲劳会减弱脑细胞的活动能力,甚至导致失眠和记忆力减退。因此学习时要劳逸结合,学会休息,学会用脑,避免“开夜车”。 ◆识记要有积极的态度识记积极性水平不同,独立性不同,记忆的效果是不一样的。因此,记忆时可将所记的材料作某种分类。找出它们间的联系,或列成提纲,绘成图表,编成顺口溜等,均可使记忆效率提高。 ◆材料的组织性心理学实验表明,记忆的内容永远填不满大脑,但在短时间的记忆活动时,大脑接收的信息量一般不超过七个单位。不过这“七”可是七个单个体也可是七个词,还可是众多单个体所组成的七个组块。因此,将材料加以组织可加大记忆容量,提高记忆效率。 了解了记忆条件之后,就要掌握一些记忆的基本方法: ◆尽可能动员多种感官参加学习活动 心理学研究表明,人在学习时,只听能记住60%,只看能记住70%,而看、听、说能记住86%。由此可见,学习时,光听记忆效果最差,真所谓:“耳闻不如眼见,更不如闻、看、说、写”。

c入门教程笔记

第一次课(有课后哦)C#输出语句||类型的转换; E:\c#学习\作业\C#第一次课\258\作业和笔记\上机作业 1.*.csclass 类文件单独打开不可运行 *.csprojclassproject 项目文件打开只可以看到单个项目 *.sln 解决方案文件打开就可以看到所有的项目 *.suo 项目资源文件资源的路径保存在里面 2.用于在程序中,保存数据的一个容器 java:int,char,String,boolean,double C#:int,char,string,bool,doubledatetime 1.组成:字母,下划线,数字 2.开头:下划线或字母开头 3.不能是关键字 3.Console类:控制台类 作用:用于控制台数据的输入和输出 Console.Write("数据");向控制台输出数据--不换行输出 Console.WriteLine("数据");向控制台输出数据--换行输出 Console.WriteLine("格式化字符串",数据) //快捷键cw+两下tab Console.WriteLine(); 3.从控制台中获取数据 string变量=Console.ReadLine(); 数据类型转换有效的整数格式字符串->整数 “123”Yes“123abc”No

int变量=int.Parse(字符串) doubled=double.Parse("有效的double类型字符串"); 第二次课(有课后哦)数组||循环; E:\c#学习\作业\C#第二次课循环断点 switch结构java和C#的差别 switchjava C# 可有可无break break必须有 数组的定义 数据类型[]数组名称=new数据类型[长度] 例:整型的保存10个数字的数组 int[]arr=newint[10];//标准写法 int[]arr=newint[]{1,2,3,4,5,6,7…};//快速初始化int[]arr={1,2,3,4,5,6,7…};//同上 循环 while循环次数不确定的时候使用 for 循环次数确定的时候使用 所有数据类型基于object foreach:避免使用数组的下标 循环遍历数组取值的时候使用 foreach(varitemin数组名) { //item是迭代变量不能赋值 //var推算类型根据循环里面的数组的类型推算出来的。}

学习Objective-C入门教程(全)

学习Objective-C入门教程 1,前言 相信iPhone不久就要在国内发布了,和我们在国内可以通过正规渠道买得到的iPodTouch一样,iPhone也是一个激动人心的产品。iPhone发布的同时,基于iPhone的程序也像雨后春笋一样在iTunes里面冒出来。 你将来也许会考虑买一个iPhone,体验一下苹果的富有创意的种种应用;你也许会考虑向iTunes的社区的全世界的人们展示一下你非凡的创意,当然也可以通过你的创意得到一些意想不到的收益。 OK,你也许迫不及待的准备开发了。但是先等一下,让我们回忆一下最初的电影是怎么拍摄的。这个很重要,因为和iPhone的开发比较类似。 在最初因为器材比较原始,所以拍摄电影需要很高的技术,那个时候的电影的导演基本上是可以熟练操作摄影器材的人。随着器材的完善,使用也简单起来。于是器材的使用不是决定一个电影的质量的唯一的因素,取而代之的是故事或者说电影的创意。 iPhone的开发也是这样。当然从入门到掌握的过程来说任何事情都是开始比较难,随着掌握的程度的加深,你将会觉得开发iPhone应用程序是一件简单而且轻松的事情,到了那个时候,你的主要的制胜武器就不是开发技术,而是你的创意了。对于你来说,我在这里写的东西都是有关“摄影器材”也就是介绍如何使用iPhone的平台来开发应用程序。 iPhone的开发语言是Objective-C。Objective-C是进行iPhone开发的主要语言,掌握了Objective-C的基本语法以及数据结构之后,你需要熟悉一下iPhone的SDK。笔者很难做到在一篇文章里面把所有的东西都介绍清楚,所以笔者打算分成两个主题,一个是Objective-C,一个是iPhone开发。 本系列将侧重于Objective-C。当然,任何一种开发语言都无法脱离于运行环境,Objective-C也不例外。所以在本系列当中也会穿插的介绍一些SDK里面的一些特性,主要是数据结构方面,比如说NSString,NSArray等等。看到NSString,NSArray这些名词,你也许会感到有些茫然,不过没有关系,随着本系列的深入介绍,你会发现你非常喜欢这些东西。 1.1,谁会考虑阅读本系列 如果你对iPhone感兴趣,如果你考虑向全世界的人们展示你的创意,如果你有一颗好奇心,如果你打算通过开发iPhone程序谋生,如果你觉得苹果比Windows酷,如果你认为不懂苹果的话那么就有些不时尚的话,那么可以考虑阅读本系列。 老手也可以考虑花一点时间阅读一下,可以发帖子和笔者交流切磋。笔者发布的文章属于公益写作,旨在为大家介绍iPhone开发的一些基础知识,如果可以提供宝贵意见,笔者将不胜感激。 1.2,需要准备的东西 第一,你需要一台苹果电脑。当然这个不是必需的条件,如果你可以在你的IntelPC上成功安装MACOS的话,那么请忽略这一条。 第二,你需要去苹果网站上下载开发工具XCODE。注意,XCODE是完全免费的,但是需要你去注册一个账号才可以下载。由于XCODE不时的在更新,所以如果你的MACOS不支持你下载的XCODE的话,那么你也许需要考虑买一个最新的MACOS。

Objective-C基础教程(中文版)

Objective-C 本文主要介绍Objective-C的基本语法,传统的面向对象语言的封装,继承以及多态在Objective-C上会是什么样子。适合于熟悉面向对象编程的读者。 Objective-C:加强版的C? Objective-C是基于标准的ANSI C的一门面向对象语言。其语法和设计主要基于Sm alltalk,所以有些类似,而且支持标准的C语言语法。代码文件的类型有三种:[.h]头文件,[.m]C代码,[.mm]C++代码。定义了一种新的调用头文件的方法#im port,这样不会重复#include头文件,只在没有调用过的时候调用一次,类似于PHP的require_once。 最常用的数据类型:字符串NSString Objective-C将字符串数据类型定义成为Class,支持可变长度的字符串,支持Uni code等等一些实用的方法。通过使用@标志符,可以方便的由字符串常量定义NSString对象。下面给出一些定义NSString的代码实例。 NSString *string1 = @"const string"; NSString *string2 = [NSString stringWithFormat:@"%d %d %s", 1, 2, "hello string"]; 类(Class) 作为面向对象语言最基本也是最重要的数据类型,Objective-C当然不会不支持。Objective-C 定义类的特点在于先在.h头文件里定义接口,然后在.m代码文件里实现。 关于.h头文件的具体的语法看下面的图更直接一点。 关于.m代码文件的具体语法也请参考下面的图。

记忆方法超右脑快速记忆法

本文集资料共4个分类:学习方法、记忆方法、快速阅读、潜能开发。每个分类都有多个资料,可在百度文库、新浪爱问共享、豆丁文库中直接搜索:“学习方法:”“记忆方法:”“快速阅读:”“潜能开发:”,即可找到更多资料。 第五部分其它记忆方法简介 记忆,是学习的重要环节,是巩固知识的重要手段。科学记忆,有利于提高学习效率,有利于加速知识积累。因此,要提高学习效率,加速知识积累,就要学会科学地记忆。 1、交替记忆法。又叫分布记忆法式重视头尾记忆法。这是把不同性质的识记材料按时间分配、交替进行记忆的方法。长时间单纯识记一门学科知识的效果不好,因为具有相同性质的材料对脑神经的刺激过于单调,时间一长,大脑的相应区域负担过重,容易疲劳,将会由兴奋状态转为保护性抑制状态,表现为头晕脑胀,注意力不集中,这就不利于记忆。 有人做过一个实验,对某一长篇材料,一天要读六十八遍方可背诵;可是每天读几段,三天内读了三十八遍可全部背出。因此,背诵长课文、阶段复习,与其集中时间打突击,不如分而治之,每天背一点,效果还好些。也就是说,把不同学科的学习交替进行,避免过多地接受单一刺激,可提高记忆功效。 课间操,就是把上午一个记忆序列打断,变成两个记忆序列。午睡,更使上下午之间的抑制降低到最低程序,以恢复下午与晚间学习的精力。 怎样利用记忆的这一特点呢? (1)把重要的事情放在开头和结尾去记,若是讲话,应该把要紧事先讲给大家,结尾时候再强调一下。(2)记忆大篇幅的材料,可采取分段记忆法,这样每段都是有开头和结尾,就人为地制造了增进记忆条件。(3)一次记忆若干名词或大题可改变其次序,每记一次就换一个开头和结尾,平均分配复习的力量。(4)合理地组织识记材料,尽量使前后相邻的学习内容截然不同,防止抑制作用的发生。例如,刚学完历史,不要去学语文,以减少材料之间的相互影响。(5)合理安排时间。早晨起来,不受前摄抑制的影响,晚上学习过后就睡觉,不受倒摄抑制的影响,这两个“黄金时间”不能错过,可以利用它记那些难度较大的材料。再有,在长时间学习中,中间要休息休息,时间最好是10—15分钟,这样,又增加了开头和结尾的次数。 2、自测记忆法。 这是通过自己测验自己来增强记忆的方法。它可以帮助我们确切了解自己的“底数。”通过经常性的自测,我们就能知道还有哪些知识没有学好,没记住,哪些地方易混淆,有误差,也就能马上核实校正,避免一误再误。

小甲鱼零基础入门学习C语言全套教程打包下载及在线观看

《零基础入门学习C语言》全套教程打 包下载及在线观看 至今小甲鱼仍然莫名其妙会受到这样的攻击,喜欢鱼C的朋友帮忙转载下吧,所有视频完全免费!不需要任何版权!尽量转,让那些狼心狗肺的家伙不能得逞! 您也可以通过以下链接捐助鱼C,一元捐助鱼C重建家园: 第八章_指针01 在线观看: 下载地址: 第八章_指针02 在线观看: 下载地址: 第八章_指针03 在线观看: 下载地址: 第八章_指针04 在线观看: 下载地址: 第八章_指针05 在线观看: 下载地址: 第八章_指针06 在线观看: 下载地址:

第八章_指针07 在线观看: 下载地址: 第八章_指针08 在线观看: 下载地址: 第八章_指针09 在线观看: 下载地址: 第九章_预处理01 在线观看: 下载地址: 第九章_预处理02 在线观看: 下载地址: 第九章_预处理03 在线观看: 下载地址: 第十章_结构体与共用体01在线观看: 下载地址: 第十章_结构体与共用体02在线观看: 下载地址: 第十章_结构体与共用体03在线观看: 下载地址:

第十章_结构体与共用体04在线观看: 下载地址: 第十章_结构体与共用体05在线观看: 下载地址: 第十章_结构体与共用体06在线观看: 下载地址: 第十章_结构体与共用体07在线观看: 下载地址: 第十一章_文件操作01 在线观看: 下载地址: 第十一章_文件操作02 在线观看: 下载地址: 第十一章_文件操作03 在线观看: 下载地址: 第十一章_文件操作04 在线观看: 下载地址: 第十二章_位运算01 在线观看: 下载地址:

第十二章_位运算02 在线观看: 下载地址: 通告: 1. 由于小甲鱼的免费视频影响到某些机构的盈利。鱼C官网于2011年8月21日遭遇无情的商业打击,主要被大量肉鸡以CC和DDOS流量等攻击。 对于我们这样的小网站来说,资金暂时没有能力购买足够的防御机制,因此鱼C 网站只能暂时被迫关闭!! 2. 迫于无奈,小甲鱼决定在鱼C官网和论坛正常恢复前,将所有的教程下载地址更新在腾讯空间和大家分享: 3. 面对邪恶势力,永不妥协!希望您如果是网站主或者某网站版主,您可以将小甲鱼的视频进行转载宣传。 对于VIP会员的特权,小甲鱼感到很愧疚,将以如下方式予以补偿: 1. 定期以 E-mail 的形式将最新的视频教程发到您的邮箱; 2. 定期将视频教程所用到的课件、工具、源代码发到您的邮箱; 3. 在论坛恢复前,VIP会员可以通过 E-mail 将您的疑问发送给小甲鱼,小甲鱼将每天抽出时间给您解答。

相关主题
文本预览
相关文档 最新文档