编程入门基础知识总结(合集五篇)

时间:2019-05-12 13:12:19下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《编程入门基础知识总结》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《编程入门基础知识总结》。

第一篇:编程入门基础知识总结

编程入门基础知识总结

基本知识

程序

= 算法 + 数据结构,算法是对操作的描述,数据结构是对数据的描述。伪代码:pseudo code 程序一般包括:

(1)预处理命令:#include等(2)全局声明部分

(3)函数:函数首部(声明)、函数体(局部声明+执行部分)程序执行过程

源程序-->编译成目标程序obj-->连接目标程序成可执行文件 类:数据成员+成员函数 命名空间

实际上就是一个由程序设计者命名的内存区域。程序员可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其它全局实体分隔开,解决名字冲突,防止全局命名空间污染。

C++库的所有标识符(标准头文件中函数、类、对象、类模版)都是在std命名空间定义的 A 的ASCII码值65

a 的97 1.数据类型

•基本类型:整型、浮点型、字符型、布尔型

•构造类型:枚举、数组、结构体类型(struct)、公用体(union)、类类型 •指针类型 •引用类型 •空类型:null int 4

unsigned int 4

short int 2

unsigned short int 2

long int 4 unsigned long int 4 char 1

uchar 1 float 4

double 8

long double 8 无符号:不用保存符号位,故比有符号多了一位

有符号:数值用补码存放(无论正负),最高位为符号位

VC中,long double与double字节数相同,故long double是无用的 GCC中,long double则有12个字节

无负值的量可以定义为unsigned int,如年龄、学号等,以增大存储范围。short int,long int,unsigned int这些类型后面的int可以省略 整型表示:

十进制,后面加L 或 l 八进制,前面加0 十六进制,前面加0x 浮点数表示:

默认为双精度型double 后面加 f 或 F 则为单精度float 后面加 l 或 L 则为长精度型long double 指数形式 数符

数字部分

指数部分

a = 3.14e2

a=0.314e4

a=31.4e1

a=3140e-1

浮点数,不管是用小数形式还是指数形式表示,在内存中都是以指数形式表示的,且数字部分必须小于1 如3.14159 在内存中表示为

+.314159,数字部分为.314159,是小于1的 字符型

字符型在内存中存储的是ASCII码,也是整型,故而可以把字符型赋给整型 字符串后面,编译系统会加个''作为结束符 符号常量

用符号代表一个常量,如#define

PI 3.14159 在编译时,系统会把符号常量替换成具体的值

2.变量

变量:程序运行期间,值可变的量

变量名:代表内存中的一个存储单元,在编译连接时由系统给每一个变量分配一个地址 标识符:标识实体名字的有效字符序列,字母、数字、下划线

常变量:定义变量时加上const,运行期间值不可变,也即只读变量 区别#define 定义的符号常量与const定义的常变量 符号常量只是用一个符号代表一个常量,在编译时把所有符号常量替换为指定的值,它没有类型,在内存中不存在以符号常量命名的存储单元 常变量具有变量的特征,具有类型,在内存中有以它命名的存储单元,与一般变量不同的是,常变量代表的存储单元值不可变。

强定义的好处

1.保证变量名使用的正确,不正确会在编译时报错

2.每个变量指定为一确定类型,在编译时就能为其分配存储单元 3.编译时即可检查变量进行的运算是否合法。

3.运算符 二进制位运算 & 二进制 按位与 |

二进制按位或 ^ 按位异或 << 左移位 >> 右移位

++--自加自减运算符 ++i 使用i之前,i先自加 i++ 使用i之后,i再自加 ++--结合方向为自右向左 例:!x++

先取非,再++(i++)+6 先i+6,后i++,不管有无括号,都是先运算,再自加

(++i)+6 先自加,再加6-i++ :i左面是符号运算符,右面是自加运算符,设i等于3,运算过程相当于-(i++),即-i=-3-3+1=-2 a =-i++:a结果为-3,先赋值,再自加; 5-i++ =?

答案2

?待测试

i=1,j=2,则a = i+++j ?

答案:3 因为相当于a=(i++)+j;i=1,j=2,则a=i+(++j)?

答案:4

赋值运算符=的优先级小于++--运算符

示例:

int arr[] = {6,7,8,9,10};sint *ptr = arr;*(ptr++)+= 123;printf(“%d,%d”,*ptr,*(++ptr));解:

*(ptr++)+= 123;相当于 *ptr +=123;*ptr++;故arr[0] = 129;ptr指向arr[1] printf函数从右向左压栈,运算顺序:++ptr;输出结果: 8 8 cout也是自右向左压栈。

逗号运算符

又称顺序求值运算符

a = 3*4,a*5 则

a=? 答案 12 ?

注意逗号运算符优先级最低。注:整个逗号表达式的值为60(a=3*4=12,12*5 =60)x=(a=3,6*3)

则 x=18 x=a=3,6*a

则 x=3

3.内存存储

浮点数在内存里和整数存储方式不同

float a =1.0f;cout<<(int)a==(int&a);(int&a)相当于把该浮点数地址开始的sizeof(int)个字节当成int型数据输出,其值并不为1

(int)a显示转换等于1

4.类型转换

转换本质:按存储单元中的存储形式直接传送

(1)浮点型赋给整型,舍弃小数部分

(2)double型赋给float,防止溢出错误

(3)int,short,long赋给char,原封不动取低八位

(4)signed赋给unsigned,符号位照搬。负数以补码形式存放,-1赋给unsigned int,结果为65536.整数不会变,除非两个长度不同(int,long)发生截断

5.C++输入输出

C++输入输出包含三个方面的内容

(1)对系统指定的标准设备的输入输出。即从键盘输入、输出到显示器屏幕,称标准输入输出,简称标准I/O

(2)以外出磁盘文件为对象进行输入输出,称文件I/O

(3)对内存中指定空间进行输入输出,通常指定一个字符数组作为存储空间,称字符串输入输出,简称串I/O

在C++中,输入输出流被定义为类。C++的I/O库中的类称为流类,用流类定义的对象称流对象。

C++中输入输出是调用输入输出流库中的流对象cin、cout实现的,即I/O不是C++本身定义的,而是编译系统的I/O库中定义的。

I/O控制符#include

setprecision(n)设置精度为n,十进制输出时,n代表有效数字位数包括整数和小数;

fixed(固定小数位数)和scientific(指数)形式输出时,n指小数位数(不包括整数部分)

double a = 123.4567890123456

cout << a;

//十进制输出,输出123.456

默认精度为6

cout<

//十进制,输出123.456789

精度为9

cout<

//恢复默认精度

cout<

//固定位数,123.456789,此时精度表示小数位数,精度为默认的6

6.getchar()和 putchar()

cout<

//读入的实际是ASCII码,故输出为字符ASCII码,97,而非读入的字符

cout<<(c=getchar());//输出为字符

while((c=getchar())!='n'){}

//循环读入字符的控制

7.函数与模版

函数原型:不同具体形参的函数声明

如:float add(float,float)

主要作用:根据函数原型,在程序编译阶段对调用函数的合法性进行全面检查。

函数重载:同一函数名定义的多个函数,这些函数的参数个数,参数类型,参数顺序至少有一项不同,一个函数不能既是重载函数,又是带默认参数的函数。

函数模版:适用于函数个数相同,函数体相同,而只有类型不同的情况

[cpp] view plain copy 01.#include 02.using namespace std;

03.template // template 04.T max(T a, T b, T c)

05.{

06.if(b>a)a = b;

07.if(c>a)

a = c;

08.return a;

09.}

10.int main()

11.{

12.int a=1,b=2,c=3;

13.cout<

14.float d=1.1,e=2.2,f=3.3;

15.cout<< T(d,e,f);

16.}

变量作用域:变量有效范围,有四种:

文件作用域 file scope

函数作用域

function scope

块作用域 block scope

函数原型作用域 function prototype scope

递归函数:函数体中,直接或间接调用函数本身的函数。

变量的存储类别:外部、局部(相对于函数而言)

全局变量(也即外部变量)

静态局部变量(static)

自动变量(不加static的局部变量)

寄存器变量(register)存放在CPU中,而非内存中,这样在使用时就省去了从内存中载入寄存器的过程。但只是建议性的,优化编译系统自动识别使用频繁的变量,从而自动将变量放入寄存器中。

extern声明的外部变量

即提前引用申明,表示该变量是将在下面定义的全局变量或在其它文件中定义(本文件中不用extern,引用该变量的外部文件用extern进行声明)

static声明的静态外部变量

只能被本文件使用,而不能被外部文件使用的全局变量,这样不同文件中的全局变量不会相互干扰,为程序模块化、通用化提供方便。

注:全局变量也是静态存储的。

内部函数与外部函数

内部函数:static 声明,文件内使用

外部函数:另一个文件里extern声明,表示是其它文件的函数,extern可以省略

宏定义

#define PI 3.14

定义符号常量

#define Area(a,b)

a*b

//定义函数功能,下面当作函数来用。

#include 'iostream' 区别

<> 在系统目录寻找,找不到报错

' '

在当前目录寻找,找不到报错

字符数组

(1)char str[] = “i am happy”;

数组长度为11,而非10,因为后面有一个''

(2)char str[] = {'i','a','m','h','y'}

数组长度为5,系统不会自动为其在后面加''

因此,(1),(2)是不同的

输出字符数组:cout<

string类

字符数组是C中的处理方式,C++中用string类,#include

字符串变量中不会存放'',只存放字符串本身,故string str =“hello”;的长度为5,要注意。

字符串变量存储的实际是字符串的指针,4个字节,sizeof(string)= 4;

string name[]={“i”,“am”,“happy”};

sizeof(name)= 3*4 = 12;

变量与指针:

int *p = &i;

//int型指针变量,定义时的*只是表示指针类型

p是指针变量,其值是变量i的地址,*p则是存储单元,*&a与*p同,都表示变量a

指向数组的指针

int a[10] = {};

int *p;

p = &a[0];//与下面等价,都指向数组第一个元素,因为数组名本身就是表示数组的地址

p = a;*************************

*p++ 相当于*(p++),先得到*p的值,p再++移到下一个元素

(*p)++则是使*p的值+1

二维数组的指针表示: *(*(p+i)+j)

表示 a[i,j]

*************************

int(*p)[n]

p为指向含n个元素的数组的指针

int *p[n]

定义指针数组P

函数指针 指向函数的指针,主要用作形参

int max(int,int);

int(*p)(int,int);

p = max;赋值(地址)

p(1,2)//调用

引用

int a = 10;

int &b = a;b是对a的引用

引用传递,引用型变量作为函数形参

[cpp] view plain copy 01.//值会改变

02.main{

03.int i=5,j=6;

04.swap(i,j)

05.}

06.void swap(int &a, int &b)//这里的&不是“a的地址”,而是指“a是一个引用型变量”,&是个声明符

07.{

08.int temp;

09.temp = a;

10.a= b;

11.b=temp;

12.}

传递变量地址:形参是指针变量,实参是变量地址,这种虚实结合的方法仍然是“值传递”方式,只是实参的值是变量地址而已。

[cpp] view plain copy 01.//值会改变

02.main()

03.{

04.int i=5,j=6;

05.swap(&i,&j)

06.}

07.void swap(int *p1, int *p2)//这里的*号也只表示是指针类型

08.{

09.int temp;

10.temp = *p1;

11.*p1 = *p2;

12.*p2 = temp;

13.}

结构体变量 struct

作函数参数时有三种形式

(1)用结构体变量名作形参

这时形参要开辟内存单元,实参中全部内容通过值传递方式一一传递给形参,时空开销大,效率低

(2)用指向结构体变量的指针作形参,只有四个字节

void printed(student *p){

cout<

num;

}

(3)用结构体变量的引用变量作形参

Student stu;

print(stu);

void print(Student &stu){

cout

}

new delete 动态内存分配

new 类型(初值),返回地址,分配失败返回NULL

float *f = new float(3.14);

int *i = new int(6);

int *k = new int[5][4];//数组

delete 变量

delete f;delete i;

数组

delete [] k;

Enum 枚举类型

声明枚举类型

enum weekday{sun,mon,tue,wed,thu,fri,sat};定义枚举变量

weekday workday,week_end;变量赋值: workday = mon;

workday = weekday(2);枚举常量对应值从0开始,0,1,2,3..typedef 声明新类型

typedef int INTEGER,相当于为int起了个别名,下面程序中就可以直接用INTEGER作int用了

主要为了方便系统移植,如long int在VC中4个字节,在GCC中占8个字节,直接用int的话可能会溢出,用INTEGER就不用担心了,只要把ypedef int INTEGER 声明语句一改就行

运算符重载

方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数,以实现响应运算。即运算符重载是通过定义函数实现的,运算符重载实际上是函数重载。格式:

函数类型 operator 运算符名称(形参表列)

{对运算符的重载处理}

例如:将 + 用于Complex类(复数)的加法运算,函数原型如下:

Complex operator +(Complex& c1, Complex& c2);

注:operator 是关键字,operator + 就是函数名,可以描述为: 函数operator +重载了运算符+

整数加可以想象为调用如下函数

int operator +(int a,int b)

{ return a+b;}

[cpp] view plain copy 01.#include 02.using namespace std;

03.class Complex

04.{

05.public:

06.Complex(){real=0;imag=0;}

07.Complex(double r, double r){real=r;imag=i;}

08.Complex operator +(Complex &c2);//声明重载运算符的函数

09.void display();

10.private:

11.double rea;

12.double imag;

13.};

14.Complex Complex::operator +(Complex &c2)//定义重载运算符的函数

15.{

16.Complex c;

17.c.real = real + c2.real;

18.c.imag = imag + c2.imag;

19.return c;

20.}

21.void Complex::display()

22.{

23.cout<

24.}

25.int main()

26.{

27.Complex c1(3,4), c2(5,-10),c3;

28.c3 = c1 +c2;

//运算符+ 用于复数运算

29.cout<<“c1=”;c1.display;

30.cout<<“c2=”;c2.display;

31.cout<<“c1+c2=”;c3.display;

32.return 0;

33.}

34.运行结果:

35.c1 =(3,4i)

36.c2 =(5,-10i)

37.c1+c2 =(8,-6i)

重载运算符的规则

(1)C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载。

(2)C++允许重载绝大部分的运算符

(3)重载不能改变运算符运算对象的个数

(4)重载不能改变运算符的优先级别

(5)重载不能改变运算符的结合性

(6)重载运算符的函数不能有默认的参数(7)重载的运算符必须和用户定义的自定义类型的对象一起使用,其参数至少一个是类对象(或类对象的引用)。也就是说参数不能全部是C++的标准类型,以防止用户修改用于标准类型数据的运算符的性质。

(8)用于类对象的运算符一般必须重载,但有两个例外,运算符“=”和“&”不必用户重载

(9)应当使重载运算符的功能类似于该运算符作用于标准类型数据时所实现的功能,否则不易使人理解程序

(10)运算符重载函数可以是类的成员函数,也可以是类的友元函数,还是计费成员函数也非友元函数的普通函数。

第二篇:游戏编程入门

游戏编程入门

经常有人问我,没有编程经验的人该如何开始开发游戏。在此之前,我总是一个个的尽力回答。然而,后来提相同问题的人数增长到难以处理的地步。我决定,是时候把我所有的建议写成文章,作为一个大概。

这篇文章是针对那些想要开发自己游戏,但几乎没有编程经验的人。事实上,我假设读者没有任何编程经验。我主要讨论游戏开发的程序和设计方面,而不是艺术性。我也不准备讲述如何进入游戏行业(这方面已经有足够的资料),而只是让你逐步的开始开发自己的游戏。最后,我所指出的这条道路也并不能作为唯一的,或是最好的路径来学习开发游戏,但至少对我和一些人很有用。选择一门语言

你要做的第一件事就是选择一门开发语言。你有很多选择,包括

Basic,Pascal,C,C++,Java,等等。也经常会有人争论对于初学者那一门语言是最好的。对于这一系列流行语言的讨论,你可以参看John Hattan的著作,What Language Do I Use?(我用什么语言?)

我的建议是以C和C++开始。有些人会说这些语言对初学者来说太高级了,但因为我自己就是学C++,我并不同意这一说法。而且,C/C++是当今使用最广泛的语言(译者认为应该是汉语。。),所以你可以找到大量学习资料和帮助。你先学C或C++都无所谓,因为只要学了一个,再学另外一个就很容易。但是,如果你先学C++,请保证在学习面向对象编程之前能理解和使用过程编程(等编程熟练再去学习类)。(译者:C是过程性语言,C++是面向对象语言)

如果你开始学习C/C++,发现太难,那再学一个简单一点的也没关系,比如Basic或Pascal。但是我真的认为,如果你坚持努力,而且有好的资料,学C/C++应该没有太大问题。

你的下一个问题可能会是:“我该怎么学C/C++?”我很高兴你这样问。最好的办法是上课。有老师可以回答你的问题,帮助你产生很大进步,编程练习作业也可以保证你能用到所学的东西。

如果你不觉得上课是个好主意,那最好的办法就是买一些好书。不要花太多时间去选一本什么“超级宝典”或“万用全书”,因为你最终可能会买几本。我建议你去一家书店,然后拿几本比较入眼的C或C++书看,直到找到一本或几本你能看懂,并且可以拿来学习的。同时,你可能会想要一些更深入的,或者一些材料,但是你一旦对于这门语言有了一些了解,我相信你应该有自己更好的选择。在这里,我有必要花一些时间,来说我看到很多初学者所关心的一个事情,特别是年轻人:没有钱买书和其他东西。首先,有很多免费资源可以利用,图书馆,Macmillan Computer Publishing(/personal),有成千上百的编程书籍。但是如果你真的想要成为一个好的程序员,还是应该投入一部分资金。应当想方设法(合法的)帮助你弄到一些钱。

网上也有很多C/C++的学习指南。但是我认为那只能作为补充而不是你自学的主要资源。

选择正确的编译器

你写的程序,或者代码,是以文本方式储存的,你甚至可以用记事本写C/C++程序。但是总需要有东西把他们转换成为可执行文件。对于C和C++,那就是编译器。

可用的编译器有好多种,包括很多免费的。选择一款自己适合的编译器很重要,免费的编译器就有这样的好处,你可以把它们试个遍,然后从中选择自己最喜欢的。然而,免费编译器比起商业版,可能会缺失一些功能和大部分服务。幸运的是,多数商业版编译器也兼售介绍版或学习版,这要便宜得多,通常功能却不见得少,唯一的限制是你不能发布用它编译的程序(短时间内你也根本用不着)。

总之,选择编译器取决于你能花多少钱,用什么操作系统,和为什么平台开发。如果要为windows开发,我强烈推荐Microsoft Visual C++。他强大的开发环境使得很多事做起来更方便,毫无疑问没有其他编译器更适合开发windows应用程序。如果你是个学生,你还可以折价买到。(译者:爽!)如果你在DOS平台开发,你最好的选择可能是DJGPP,免费的哦~。

选择开发平台

尽管最终你很可能为好几个平台开发,总要先选择一个来学。当你在学这门语言,还没有接触到图像的时候,你可能会想使用非图形用户界面的操作系统,比如DOS,Unix.这样可以避免接触高层,比如windows编程,让你集中精力学习语言本身。

一旦你做好开发游戏的准备,那么,应该考虑是否改变平台,让我们来看看每个选项的特征。

windows:如果你想成为游戏行业的专家,或者如果你想让许多人来玩你开发的游戏,那么,这就是你要选择的平台。因为多数你的用户使用windows,而且现在我也看不出有什么改变的迹象。当今大多数的windows游戏都是由一种你可能听说过技术---DirectX---开发的。你可以DirextX这个库直接访问硬件,这意味着你可以开发高性能的游戏。

DOS:DOS过去是占统治地位的游戏平台,但是已经一去不复返了。尽管可能有一些特殊爱好者还在为DOS开发游戏,现在没有一个为DOS开发的商业游戏,他也将继续衰落,直到微软不再支持。如果你只是想开发游戏,还是不要选择DOS,如果你非要这么做,也不要太久。记住:由于存在大量DOS游戏开发的书,可能还有人辩护从这些书中学习DOS游戏开发。但是,windows游戏开发的书越来越多,那些辩解也变得越来越无力。

Linux:Linux是Unix的一种,由于很多原因后来变得流行,包括稳定性,价格,和反微软情绪。尽管Linux用户还是相当少,但是围绕着他的热情和不断增长的市场潜力使其也成为不错的选择。

Macintosh:MAC有大量忠实粉丝并不能说明什么,几乎每一个和我讨论的MAC狂热者都需要更多更好的游戏。我没有见过多少MAC游戏开发资源,但我相信还是有的,因此这也是一个选择。

consoles:console(就是PS,N64,DC等等)的游戏市场十分巨大,当然

console游戏开发的前景也不错。然而以非商业的形式开发console游戏,出于各种原因,在现在似乎行不通。如果你开发console,很可能是在被商业游戏开发组雇用之后。

开始进入主题

现在是时候讨论开发游戏了。简单起见,我假设你选择用C/C++在windows平台开发,可能你选择别的,但大多数我说的还是有用的。

首先,甚至在你打算开始开发游戏之前,你必须很好掌握C和C++.你应该懂指针,数组,结构体,函数,可能还有类。如果你精通他们,就可以开始做游戏了。

这篇文章可能不能教会你所有关于开发游戏的东西。幸运的是,也没有这个必要。这方面有很多书,网上也有很多指南。GameDev.net应该有所有你想要的东西,这里我建议你怎么开始:

找一本或几本书。对于windows游戏开发初学者,Tricks of the Windows Game Programming Gurus是个完美的开始。除此之外,还有许多好书.读透这些书,试试所有的例子,不懂得部分多读几遍。

网上指南作为补充。除了弄清书上读到的,他们还涉及一些书上没有谈及的主题。

向专家寻求帮助。如果你不能在书上或指南找到问题的答案,好好利用我们的论坛和聊天室。那里有好多专家愿意帮助别人。

这并不是要你按照顺序执行的,而是可以同时并且不断的重复执行。

光学习还是不够的,你必须运用你所学到的。从一个小游戏开始,然后在这个基础上前进。你可以看一下Geoff Howlands 的著作: How do I Make Games?

A Path to Game Development.开始,自己独立工作。不要急着加入团队,那样只会减缓学习过程。而且一旦你有了自己的几个游戏,你可以为团队做出更大的贡献。

还有关于书,你应该不仅仅看游戏开发的书。为了能够开发出你看到商店出售的游戏,你应该钻研比大多数游戏开发书籍更高级的一些主题。有一些可以在网上找到,但你也应该选一些图形学,人工智能,网络,物理学等方面的书。计算机科学学位看来唾手可得,但因为你被迫上这些课的时候可能认为他们和游戏开发无关----你错了!

包装

这里有一些提示很有用

不要只积累知识,用它:你永远不会知道会理解一些东西知道你是用他们。用你学的东西作些演示。做作书上的练习。

经常玩游戏:这样做会使你做出更好的游戏。而且可以减轻编程的枯燥。帮助别人:能帮别人的地方尽量帮助别人,教别人的过程中自己会学到更多。有始有终:不要有这样的想法“我能够完成这个游戏了,但是我又有一个新的想法,那就直接做下一个。”你可以学得更多如果你完成他,你也可以用事实证明你不是只会空谈。所以,尽量不要做很大很复杂的游戏,直到你有了一定经验。

开始吧!你现在可以开始准备QUAKE4了。可能你不是不是很了解,但是至少应该知道如何开始这条道路,找多些资料,加上多年努力工作,他一定会实现!

第三篇:编程入门基础知识点总结

一、常量

 数字常量

i.普通数字:1,35,2.7 ii.指数形式:2.45e-2等价于2.45*10-2 注意e大小写皆可,e前面的数字不能省,就算是1也不能省,后面的数字一定要是整数

iii.长整型,单精度浮点型:3235L,32.5F 分别表示3235是长整型数据,32.5是单精度浮点型左,若不写上L,F则表示3235是整型,32.5是双精度浮点型,L,F大小写皆可

 字符常量

i.普通字符常量:用单引号把一个字符括起来,如‟A‟,‟@‟

ii.转义字符常量:一对单引号括起来并以“”开头的字符序列,如‟n‟(回车)、‟123‟(8进制123对应的字符), ‟x23‟(16进制23对应的字符) 字符串常量

用一对双引号把一个字符序列括起来,如“ABCef”,系统存放字符串常量,每个字符分配一个字节,各字符所占字节紧邻,并且字符串末尾会给再开一个字节里面放一个’’做为结束标志。

 符号常量

定义格式 #define 符号常量名 符号常量值,如#define N 20则定义了符号常量N,其值为20,注意符号常量名和符号常量值之间是用空格隔开,而不是写上=号,#define和符号常量名之间也有空格的。

 题目:P7—1,5,6,7,9,10

二、标识符

 命名规则

以数字,字母,下划线这三类字符组成,但只能以字母或下划线开头,而不能也数字开头,另外不能将关键字做为标识符。32个关键字表在P365附录B  变量名,函数名,符号常量名全都是标识符  题目:P7—2,3,4

三、变量

 变量的定义格式

类型名 变量名;如 int a;定义了一个整型常量a。变量名是由人类随便定义的,符合命名规则的前提下,爱写啥就写啥。所以什么flag,cc,y1或者函数名fun,find等全部是自定的用来做为名字而已,没有更特别的意义。

 类型名

int 整型,long 长整型: 用于存放整数,只是数值范围不同

float 单精度浮点型 double 双精度浮点型:用于存放实数,数值范围,精度不同

char字符型:用于存放字符

 变量赋值,初始化

int a=3;定义的同时初始化

a=6*9;定义后在程序中进行赋值

 变量的值

只有在赋值操作时才会被改变,即将其放在等号左边时才会改变它的值,或自增自减操作:a=5,a++,a--,像a+3并未改变a的值,只是使用了a的值而已. 自增自减运算

变量++,++变量,变量--,--变量

使变量的值自增1或自减1 等价于 变量=变量+1 变量=变量-1 ++,--放于变量前后效果的区别:

当自增自减运算做为表达式的一部分时,++,--放在变量前面是先自增自减再使用变量的值,放在变量后面则是先使用变量的值,再自增自减。如x=3;printf(“%d”,++x);则相当于执行了++x;printf(“%d”,x);这样的操作所以打印出4 再如x=3;printf(“%d”,x++);则相当于执行了printf(“%d”,x);x++;这样的操作,则打印出3,当然最后x的值还是4。

四、表达式

 运算符和运算对象

一个运算符都有若干个运算对象,如 + 必然要跟两个运算对象才能进行加法运算:3+5。C语言里称需要跟n个运算对象的运算符为n元运算符。一元运算符有:!,(类型名)二元运算符有:+,-,*,/,%(求余), =,+=,-=,*=,/=,%=,< , > , <=, >=, = =(等于),!=(不等于),&&(且), ||(或)多元运算符有:, 运算符的优先级和结合性

i.优先级:同一个运算对象左右两边若同时有两个运算符,则这两个运算符优先级高的先进行运算。

ii.结合性:若同一个运算对象左右两边的两个运算符优先级相同,则根据结合性判断先进行哪个运算,自左自右结合性的先算左边的运算符,自右自左的先算右边的运算符。

iii.各运算符的优先级和结合性见P365附录C  强制类型转换

格式:(类型名)表达式。将后跟的表达式的值的数据类型转换为与圆括号内的类型名一致的类型。注意类型名一定要用()括起来。

 算术表达式

i.算术运算符:+,-,*,/,%(求余)ii.由算术运算符加上运算对象构成算术表达式,如3+3*6-9/2 iii.值:跟我们小学时学的一样,就是表达式的计算结果 iv.整数除以整数结果取整数部分,故1/3得到的值是0 v.5%3 结果为2,想想小学除法,求余得到的是余数不是商。 赋值表达式

i.赋值运算符:=,+=,-=,*=,/=,%= ii.赋值表达式:变量=表达式,如x=3+6,x+=6-9,x+=x*=3+4 注意等号左边只能是变量

iii.复合赋值运算符的运算:以/=为例:x/=表达式 等价于 x=x/(表达式)iv.值:=号左边的变量最终的值  关系表达式

i.关系运算符:< , > , <=, >=, = =(等于),!=(不等于)ii.由关系运算符加上运算对象构成关系表达式,如3>=4, 2==a iii.值:满足相应运算符所指定的关系的值为1,否则为0  逻辑表达式

i.逻辑运算符:&&(且), ||(或),!(非)ii.由逻辑运算符加上运算对象构成逻辑表达式,如3&&4, x||!y iii.值:满足相应运算符所指定的关系的值为1,否则为0 iv.进行 ||或 运算时,若||左边的表达式值为1,则不再对右边的表达式v.进行运算。进行 &&且 运算时,若&&左边的表达式值为0,则不再对右边的表达式进行运算。 逗号表达式

i.逗号运算符:,ii.用逗号将各种表达式连续起来构成逗号表达式,如3+4,a=9,8*a iii.值:组成逗号表达式的各个表达式中的最后一个的值,如上例为8*a  题目:P7—11~17 P8—18~33

五、输入输出函数

 scanf(“格式控制串”,变量地址表列);如scanf(“%d%c%d”,&a,&ch,&b);

scanf(“%4f”,&x);注意:

i.格式控制串可控制截取用户输入的前几个字符给变量,但不能控制输入几位小数给变量,如不能写成scanf(“%4.2f”,&x);ii.第二个参数给的是地址,即要么是&+变量名或数组元素名的形式,要么就是一个数组名或指针变量名,如int *p,a;p=&a;scanf(“%d”,p);iii.考试时注意看题目给你写好的scanf的格式 1.若其格式控制串内各格式符用“,”隔开如scanf(“%d,%c,%d”,&a,&ch,&b);那输入时也要用逗号隔开,如此例输入时应:3,+,5 2.若是这种格式scanf(“%d %d”,&a,&b);则输入时应:3 5;3.若是这种格式scanf(“%d%c%d”,&a,&ch,&b);则输入时应3+5,若写成3 + 5则a=3,ch=‘ ’(空格),b=任意值

(自己上机运行看看结果)

 printf(“格式控制串”,输出项表列);如float x=7.5;printf(“%8.2f”,x);此处的意思是将x打印出来,且占8列,保留两位小数。自己上机运行看看效果。

 常用格式符汇总:

i.%d:输入输出整型数据,%ld:输入输出长整型数据 ii.%c:输入输出字符型数据

iii.%f:输出单(双)精度浮点型数据,输入单精度型数据。

%lf:输入双精度型数据

iv.%s:输入输出一个字符串,用printf输出字符串时,输出项书写时可

为字符串常量,或字符数组名。如printf(“%s”,”hello”);或char str[10]=”hello”;printf(“%s”,str);v.%u:输入输出无符号整型,%o:输入输出八进制数,%x:输入输出十六进制数

 getchar();函数调用后返回用户输入的一个字符,故需再定义一个变量来存放这个字符,即使用时应 char c;c=getchar();意思就是接收用户输入的一个字符,并将其赋值给变量c。

 putchar(字符常量或字符变量名);

如char c=‟A‟;putchar(c);或putchar(„A‟);都会向屏幕输出字符A。

六、C语言的语句

      表达式语句:由表达式末尾加上分号构成。

函数调用语句:由函数调用表达式加上分号构成。空语句: ;

选择结构语句:if语句 switch语句

循环语句:for语句 while语句 do while语句

复合语句:用花括号{}将以上任意语句括起来构成一条复合语句。

七、C程序的基本结构

void main(){

声明部分:用来定义变量和声明自定义函数的原型,需以“;”结尾,如int x;

执行语句部分:第六点里介绍的各种语句,如x=3;printf(“%d”,x);} main函数外可写自定义函数。如 int max(){

return 0;}

八、选择结构语句

 if(表达式)语句1 else 语句2

如果if语句的圆括号内的表达式值为非0,则执行语句1,值为0则执行语句2。

i.表达式可为任意表达式,if语句执行的实质是判断表达式的值是否为0来决定执行语句1还是语句2。另外请在此处表达严重关切,不管是高ii.手还是菜鸟经常会把判断两个数相等的符号“==”写成了一个等号“=”成为了赋值运算,这样的写法不会引发编译错误,但结果会与原意大大不同,所以考试前请再三提醒自己。

语句1和语句2都只能是一个语句,若要跟多条语句,切记用一对{}括起来,构成复合语句;也不要随便在圆括号后加“;”,因“ ;”构成一条空语句,这会使后面跟的语句1不再属于if语句的组成部分。

iii.if语句的三种结构

1.单边: if(表达式)语句

2.双边:if(表达式)语句1 else 语句2 3.多层(重点掌握): if(表达式1)语句1 else if(表达式2)语句2 else if(表达式3)语句3 …

else 语句n  条件运算符 表达式1? 表达式2 : 表达式3

若表达式1的值非0,则取表达式2的值做为整个表达式的值,否则取表达式3的值为整个表达式的值。如 3>4? 1:2 该表达式的值为2  switch语句

switch(表达式){ case 表达式1:语句

case 表达式2:语句

case 表达式n:语句

default: 语句 } 语句执行过程:先计算表达式的值,然后判断该值与表达式1到表达式n中的哪个相等,若与表达式i的值相等,则执行表达式i后的所有语句,当遇到break;语句时结束整个switch语句的执行。表达式1到表达式n的值都不相等的情况下执行default后跟的语句。每个case后可跟多条语句。

九、循环结构

 for循环语句

for(表达式1;表达式2;表达式3)循环体语句 语句执行过程: 1.计算表达式1 2.判断表达式2的值是否为0,若为0,语句执行结束,若不为0,进入步骤3 3.执行循环体语句(需注意的是循环体语句只能有一个语句,若要包含多个语句要用一对{}括起来,构成一条复合语句,此处也不要随便加上 “;”,因一个“;”可构成一条空语句,这会使得后面真正的循环体语句不属于for循环语句的部分)。进入步骤4 4.计算表达式3,然后重新进入步骤2  while循环语句 do while循环语句

i.while(表达式)循环体语句 执行过程:

1.判断表达式的值是否为非0,若是进入步骤2,否则结束语句执行。2.执行循环体语句,重新回到步骤1。ii.do 循环体语句

while(表达式); 执行过程:

1.执行循环体语句,进入步骤2

2.判断表达式的值是否为非0,若是重新回到步骤1,否则结束语句执行。

这里要注意的地方跟for语句一样,即循环体语句只能有一个语句,若要包含多个语句要用一对{}括起来,构成一条复合语句,此处也不要随便加上 “;”,因一个“;”可构成一条空语句,这会使得后面真正的循环体语句不属于while循环语句的部分,另外do while循环的while(表达式)后是要加“;”的。 break语句:放在循环体内实现的功能是结束其所在的那层循环的执行。

十、数组

 定义格式:数据类型

数组名[整型常量];如 int a[10];定义了一个整型数组,数组名为a,这个数组含有10个元素。

 引用数组元素: 格式:数组名[下标]

切记下标值从0开始。下标可为常量,表达式,变量等,如int i=3; a[0]=5;a[3*2]=9; a[i]=7;

 初始化:数据类型

数组名[整型常量]={数据表列};将数据表列的各个值依次赋值给数组的各个元素。如int a[5]={0,1,2,3,4};则数组a各元素a[0]到a[4]的值分别为0,1,2,3,4  遍历数组元素

数组定义后,我们不能对数组进行整体的操作,如int a[10];不能用a=3这样的操作将数组的各元素都赋值为3;而只能一个一个元素的进行赋值,如a[0]=3;a[1]=3;a[2]=3…a[9]=3; 当然此时我们就可以借助于一个for循环来控制下标的变化从而对数组的各个元素进行赋值 for(i=0;i<10;i++)a[i]=3;

当然这只是用for循环遍历数组各元素的最简单的例子,一般考试考的是找出数组元素的某种特性的极值,比如最大值,最小值,或对数组各元素进行排序,这时我们就可以使用for循环来遍历数组的各元素,然后在当前循环中得到一个元素再对其进行处理。如i=2时访问到的元素是a[2],你就可以问问它,你是不是最小值啊。 整型数组

int a[10];整型数组里的各个元素存放的是整数。a[3]=3; 字符型数组

char str[20];字符型数组里的各个元素存放的是字符。

str[3]=‟A‟;

十一、字符串函数

 gets(字符数组名或字符指针变量);

如char str[10],* str2;str2=str;则gets(str);或gets(str2);都是接收用户输入的字符串如“ABC”存入到字符数组str中

 puts(字符数组名或字符指针变量或字符串常量);

如char str[10]=”china”;char *str2;str=str2;则puts(str);或puts(str2);或 puts(“china”);都会在屏幕上打印出 china  strlen(字符数组名或字符指针变量);字符串测长函数

char str[20]=”hello world!”;

int len;len=strlen(str);得出的结果是len的值为12  strcat(字符串1的地址,字符串2的地址);

将字符串2的内容连接到字符串1的尾部。char str1[20]=”ABC”,str2[20]=”xyz”;strcat(str1,str2);

则程序运行的结果是str1内存放的字符串变为ABCxyz,当然str2存放的字符串还是xyz。

 strcmp(字符串1的地址,字符串2的地址);

比较串1和串2哪个比较大。比较大小的依据是,两个字符串从左往右相应位置上第一个不相等的字符ASCII码值之差。char str1[20]=”ABCE”,str2[20]=”ABDE”;int i;i=strcmp(str1,str2);第一个不相等的字符为str1的‘C’和str2的‘D’,而二者相差-1,故-1做为strcmp函数执行的结果返回到被调用的位置,该位置位于赋值表达式内,故将其值赋值给i,即此时i的值就是-1. strcpy(字符串1的地址,字符串2的地址);

将字符串2的内容复制到字符串1内。char str1[20]=”ABC”,str2[20]=”xyz”;strcpy(str1,str2);此时str1的内容为”xyz”,当然str2的内容没变 strcpy(str1,”uvw”);此时str1的内容又变成了“uvw“。

十二、函数

 函数定义

函数类型

函数名(形式参数列表){

内部变量定义和声明部分

执行语句

} 如:

int max(int x , int y){ int z;

z= x > y ? x : y;

return(z);} 注意点:

1.函数类型是指返回值的类型,即要与return语句后跟的表达式的值的类型一致。若函数类型为void则说明该函数无返回值,即函数体里不能出现return 语句。2.形式参数列表里定义的变量要记得给它们指定类型,而且如果同时要定义多个,应在每个前面都分别指定类型名,而不能写成int x,y;3.函数体里能写的语句跟main函数一样,在开头可定义所需要的变量,后面跟上一堆执行语句。 函数调用流程

以上面的函数为例,在main函数进行调用: void main(){ int a,b,c;

scanf(“%d%d”,&a,&b);printf(“%d”,max(a,b));或 c=max(a,b);printf(“%d”,c)以上两种方法都会在屏幕中打印出a,b间的较大值。

调用函数的格式 函数名(实际参数列表);调用的时候像什么函数类型,形式参数的类型就不要加上去了。max(a,b)中max就是函数名,写上变量名a,b是实际参数列表,执行这个调用语句时,会先把a,b的值给相应位置的形式参数即执行了x=a,y=b这样的操作,然后开始执行max函数的函数体的语句。当max函数体里执行到一个return语句时,则max函数结束执行,将return后的表达式的值返回给main函数调用max函数的那个位置,即若上面a=3,b=5则max(a,b)return后的表达式的值应该是5也就是说执行完max后把5返回到调用max的位置可看成printf(“%d”,5);或另一种解法的c=5。}

十三、指针

 指针变量的声明: 类型名 * 指针变量名;  通过指针变量访问它所指向的普通变量的值

先将普通变量的地址赋值给指针变量,再通过指针运算符* 得到普通变量的值。int *p,x,y;x=3;p=&x;则printf(“%d”,*p);会打印出3即x的值 y=*p;则y的值变为3 *p=5;则x的值变为5  指针变量加上(减去)一个位移的效果

若指针变量存入的是数组元素的地址,则其加一减一得到的是那个数组元素下一个或前一个元素的地址。int a[10];p=&a[3];*p得到的是a[3]的值。

若p++;此时p存放的是a[4]的地址&a[4];*p得到的就是a[4]的值。或p--;此时p存放的是a[2]的地址&a[2],*p得到的就是a[2]的值。

 行指针

i.主要是对于二维数组来说的,二维数组每行都有自己的地址,第0行地址用 数组名 表示,第i行地址为 数组名+i;而想要得到二维数组里一个元素的地址,必需先得到其所在行的地址,然后再由那个地址得到元素的地址,比如说 int a[3][4];定义了一个二维数组,该二维数组第0行的地址为a,第1行的地址为a+1,第2行的地址为a+2,想从行的地址得到元素的地址,需在行地址前加上指针运算符“*”,即*a就是第0行首个元素的地址即a[0][0]的地址,而a[0][2]的地址就是在a[0][0]的地址基础上加上位移量2,即*a+2,然后想得到a[0][2]这个元素的值呢就再加上一个指针运算符“*”,即*(*a+2),类似地,想得到a[2][2]这个元素的值呢就是*(*(a+2)+2)ii.定义行指针变量: 类型名

(*变量名)[数组长度];

如int(*p)[4],a[3][4];p=a;此时就可把p当成a来用,用法同上所述。

 判断是否合法访问数组元素:若是指针法访问,判断指针后跟的是否地址;若是下标法访问,判断下标有无越界。

 函数指针:函数名即为函数的地址(指针)

i.函数指针变量的定义: 类型名(*变量名)(形参列表);如 int(*p)();ii.赋值:指针变量=函数名;设有个函数其函数名为max,则要将该函数的地址给p的话只要执行如下语句即可 p = max;

 指针数组:指针数组的数组元素都是指针变量,是用来存放变量的地址的,定义格式为 类型名 * 变量名[数组长度];如int * p[10]; 指向指针的指针:指针变量也是一种变量,故在内存中也有对应的一个地址,而要存放指针变量的地址,就要求助于用来存放指针变量的地址的指针变量,定义格式

类型名 ** 变量名;如 int *p1;int **p2;int a=3;可进行赋值p1=&a;p2=&p1;则a、*p1和 **p2的值都是3.十四、宏定义

 无参宏定义 #define 标识符

定义后,出现所定义的标识符的地方都将以定义时指定的值来代替。

#define M 2+3 main(){ int x;

x=M*M;则x的值为2+3*2+3=11若想得到的结果是(2+3)*(2+3)则定义时也写成这样 #define M(2+3)} 注意#define、标识符、值之间都要用空格隔开,且宏定义结尾不需加分号。 带参宏定义

#define 标识符(参数表)值

#define S(x,y)x*y main(){ int a=3,b=4,c=5,d=6;

printf(“a*b=%dn”, S(a,b));此时会打印出 a*b=12

printf(“a+b*c+d=%dn” , S(a+b,c+d));此时会打印出a+b*c+d=29,带参宏定义执行时是将a+b这样一个表达式代替x,c+d这样一个表达式代替y,所以S(a+b,c+d)进行的是a+b*c+d的运算,而不是将a+b的值给x,c+d的值给y然后再做x*y,这点跟函数调用传递参数是不一样的。}

 自定义类型名typedef:对已存在的类型名取一个外号。

i.基本格式:typedef 原类型名

新类型名;ii.typedef int INTEGER;则int a,b;等价于INTEGER a,b;iii.typedef int NUM[10];则 int a[10];等价于 NUM a;a即为一个有10个元素的数组的数组名。

iv.typedef int * INTEGER;则int *a,*b;等价于INTEGER a,b;

十五、结构体,共用体,枚举类型

 结构体

i.结构体类型的定义及变量的定义

struct 结构体名

{类型 成员1;

类型 成员2;

……

类型 成员n;

}变量名;如

struct student { char name[10];long num;int score[4];}st1;定义类型时同时定义变量

struct student st2;定义类型后,用类型名定义变量 还有一种 struct

{ char name[10];long num;int score[4];}st3;不给类型名,直接定义变量

ii.结构体变量所占字节数:各成员各占字节数之和,如以上st1,st2,st3的字节数皆为10+4+2*4=22 iii.结构体数组的定义及初始化

struct student a[3]={{ “zhang”,20030001,89,90,91,92},{“liu”,20030002,68,69,70,71},{“li”,20030003,57,58,59,60} } iv.结构体成员的访问

1.结构体变量名.成员名 如st1.name[2] 2.通过指针访问:struct student *st;st=&st1;(*st).num 或 st->num  共用体

i.共用体类型的定义及变量的定义

union 共用体名 { 类型

成员名1;

类型

成员名n;

};

变量的定义与结构体类似,也有三种方法。union data {

int i;char ch;float f;}d1;定义类型时同时定义变量

union data d2;定义类型后,用类型名定义变量

union {

int i;char ch;float f;}d3;不给类型名,直接定义变量

ii.共用体变量所占字节数:各成员所占字节数的最大值,如上d1,d2,d3所占字节数皆为4.(单精度浮点型变量所占字节数最多为4).iii.共用体成员的访问

1.共用体变量名.成员名 如d1.f 2.通过指针访问:union student *d;d=&d1;(*d).num 或 d->num  枚举类型

i.枚举类型的定义:

enum 枚举名{枚举元素名1,枚举元素名2,…,枚举元素名n}; ii.枚举元素的值:

默认值分别为0、1、…、n-1。枚举元素的值也可在定义时重指定,对于没有指定值的元素,按顺序加1

如enum weekday{sun=7,mon=1,tue,wend,thur,fri,sat};则sun值为7,mon值为1,tue值为2,wend值为3,thur值为4,fri值为5,sat值为6

十六、Turbo C的使用

 菜单激活: F10

 菜单切换:左右方向键在不同菜单间切换,上下方向键在同一个菜单不同选项间切换。

 载入文件:两种方法:1.找到源文件所在位置,直接将其拉到Turbo C快捷方式上;2.F3  运行程序: ctrl+F9

 看程序运行结果:alt+F5  进入编辑状态:菜单Edit  保存: F2

 插入状态切换: Insert键

第四篇:powerbuilder编程简单入门(个人总结)

2011-4 by 邵家鑫 From Tsinghua 一种简单的powerbuilder10数据库编程介绍

1、需求分析与数据库建立

进行需求分析(需求分析文档),确定数据关系,建立各种数据表,建立数据库(Access),设置ODBC数据源(控制面板->管理工具->数据源ODBC->“用户DSN”菜单下点“添加”选相应的数据源驱动程序,如果用Access2003建立的,则选第三项“Driver do Microsoft Access(*.mdb),然后点击“完成”->输入数据源名,如mydata,然后点击“选择”按钮选择建好的数据库,最后点“确定”,如下图所示)

2、界面设计(功能界面、重要数据表维护界面)

界面设计主要分为几个部分

(1)按照管理系统所需的功能设计界面。

首先画出所有可能的业务流程(数据的各种可能输入、修改、删除业务,数据的输出、显示业务)

(2)按照需要维护的表设计界面(往往给最高权限管理员直接修改数据用)

3、开始程序编写

(1)新建一个workspace(new->workspace->workspace)(2)在workspace下建立一个目标

(new->Target->application),可取名frame

2011-4 by 邵家鑫 From Tsinghua(3)在目标下建一个主窗口

可取名w_main,窗体名一般以w_开头(new->PB Object->Window),将其Window Type设为“mdihelp!”

(4)为主窗口建一个主菜单

可取名m_frame,菜单名一般以m_开头(new->PB Object->Menu)(5)程序中设置ODB ODBC 点击按钮,选中“ODB ODBC”项,然后单击右边“New”按钮,弹出如下对话框,设置Profile Name和Data Source,如图所示。

(6)建立配置文件

配置文件取名“config.ini”,内容如下:

[MyDB] DBMS=ODBC AutoCommit=False DBParm=ConnectString='DSN=mydata;UID=;PWD='

(7)自动连接数据库与退出程序关闭数据库的编写

2011-4 by 邵家鑫 From Tsinghua 首先建立Global Variables如下: string gs_userid,gs_username //登录用户标识、用户姓名 string gs_root_path,gs_ini_path

//应用路径和主配置文件路径

其次申明Global External Functions如下:

FUNCTION int GetComputerNameA(ref string computername,ref long size)LIBRARY “KERNEL32.DLL” alias for “GetComputerNameA;Ansi” FUNCTION long GetCurrentDirectoryA(long nBufferLength, REF string szBuffer)LIBRARY “KERNEL32.DLL” alias for “GetCurrentDirectoryA;Ansi” FUNCTION long SetCurrentDirectoryA(string szPathName)LIBRARY “KERNEL32.DLL” alias for “SetCurrentDirectoryA;Ansi” //end prototypes 在程序的总入口(进入“”)Open事件中写入以下代码: // Profile moneyandfriends string ls_1

//设置应用根目录

gs_root_path = space(255)GetCurrentDirectoryA(255, gs_root_path)if right(gs_root_path,1)= '' then gs_root_path = left(gs_root_path,len(gs_root_path)1)if pos(ps_sql, “group by ”)> 0 then

ls_end = right(ps_sql, len(ps_sql)pos(ps_sql, “order by ”)+ 1)

ls_where = mid(ps_sql, pos(ps_sql, “where ”)+6, len(ps_sql)-len(ls_front)-len(ls_end)-6)else

ls_where = mid(ps_sql, pos(ps_sql, “where ”)+6, len(ps_sql)-len(ls_front)-6)end if

2011-4 by 邵家鑫 From Tsinghua ls_return = ls_front + “where(” + ls_where +“)and ” + ps_where + “ ” + ls_end else if pos(ps_sql, “group by ”)> 0 then

ls_front = left(ps_sql, pos(ps_sql, “group by ”)pos(ps_sql, “group by ”)+ 1)elseif pos(ps_sql, “order by ”)> 0 then

ls_front = left(ps_sql, pos(ps_sql, “order by ”)pos(ps_sql, “order by ”)+ 1)else

ls_front = ps_sql

ls_end = “" end if ls_return = ls_front + ” where “ + ps_where + ” “ + ls_end end if return ls_return(2)在窗口中声明局部变量用来记录最初的没有where语句的窗口的SQL查询语句 string is_original_sql

(3)声明局部变量ls_old_select, ls_new_select,如下使用 string ls_old_select, ls_new_select ls_old_select = dw_ttxx.GetSQLSelect()if is_original_sql = ”" then is_original_sql = ls_old_select else //避免条件被循环添加

ls_old_select = is_original_sql end if

ls_new_select = f_change_where(ls_old_select, is_conditions)dw_窗口.SetSQLSelect(ls_new_select)

第五篇:脑电图基础知识总结和入门

脑电图 electroencephalogram 河南科技大学第一附属医院神经内科

一:原理

脑电图的基本原理

(一)基本概念

将大脑细胞群的自发性、节律性电活动所产生与临近部位的5—100微伏电位差用电极加以引导接入放大和记录装置,放大100-200万倍,以脑细胞电活动的电位为纵轴,时间为横轴,记录或显示的电位一时间关系曲线,就是脑电图。不管是哪一类型的脑电图仪,至少包括有输入、放大、调节、记录/显示、电源等五大部分.脑电图的基本特征有周期、频率、振幅(波幅)、波形和位相。周期:一个波从它离开基线到返回基线所需的时间称为周期或称为1周波,其计算单位为毫秒(1秒以内为短程;1-3秒为中程;3-10秒为长程)。频率:每秒出现的周波数,分为4个频率带(δ频率带:3.5/s以下;θ频率带:4~7.5/s;α频率带:8~13/s;β频率带:13/s以上)。以周/秒(c/s)表示。振幅:一个波由波顶到波基底线的垂直距离,其计算单位为微伏(25微伏以下为低波幅;25-75微伏为中波幅;75-100微伏为高波幅;100微伏以上为极高波幅)。波形:即波的形状(安静、闭目和清醒状态下的波形:正弦波或类正弦波、半弧状波、锯齿波、后头部孤立性慢波、复合波与多形波;睡眠状态时的脑波:驼峰波:又称顶尖波。在浅睡期出现;睡眠纺锤波:又称σ节律,12-14Hz的波。在中睡期出现)。位相:一个波由基线向上、下偏转便产生位相,向上为负相,向下为正相(正常人中除额部与顶枕之间位相常相反外,在同侧半球其他部位前后(或左右)两个导联之间出现位相倒置是应属于异常)。

脑电图的频率,从0.5~30Hz是为目前普遍使用于临床的频率范围(脑电图仪常用的有16导、24导、32导;滤除高于30Hz或60Hz以上的高频信号,因一般的脑电图有用信号在30Hz以下;滤除低频信号,降低低频干扰(呼吸、动作等)的影响,通过选择时间常数来限定和滤除低频信号。常用0.1秒和0.3秒)。脑电的振幅,从几微伏到几百微伏。脑电图波形的相位,也称波的极性,以波形基线为标准,朝上的波称为负相波,朝下的波称为正相波。两个波顶之间的时间差称相位差,相位差一般用时间ms表示。一般概念:

1)背景活动:在脑电图描记中,除了阵发或局限的显著变动部分外,其表现为占优势的持续的活动。

2)调幅:背景活动的波幅表现有规律地增高和减低呈纺锤状/梭形。在临床脑电图中,a节律常表现为这种调幅现象。称”a调幅现象“。

3)调节:也叫波率调节,每秒频率的差数叫频宽。一般说,波率调节指a节律与稳定性而言。同一部位导出的脑波的基本频率前后相差不应超过1Hz,在不同部位导出的脑波基本频率相差不应超过2Hz。

4)弥漫性a节律:a波减慢,波幅和指数增高,调幅明显,呈同步性出现于大脑各区,特别是额、颞区明显。

5)a波前移现象:顶、枕区a节律出现减少,额、颞区a节律出现率明显增加,且额、颞区a波振幅高于顶、枕区。正常波:

1)α波和α节律:α波乃每秒8~13周波范围的电活动,而重复节律性地出现的8~13周波活动谓之α节律。α波和节律波幅的范围为50~100微伏。大脑各区均有α活动和α节律,不过以枕部最为明显。枕部平均波幅为50~70微伏,其它部位平均为10~30微伏。睁眼时α波消失,闭眼后又出现。

2)β波和β节律:β波是每秒18~30周波范围内的电活动。波幅为20~50微伏。β波以额区和中央区为最明显,6%正常人的脑电图以β波为主。

3)γ波:为每秒35~45周波的脑电活动。波幅较低,约为α波波幅之半。额区及前中央区最多。

4)δ波和δ节律:系指每秒0.5~3周波的电活动。正常δ波的波幅为10~20微伏,出现在额区,不以纺锤样出现,且不得多于8~10%,其它各区则少于5%。δ活动为儿童的(正常)主要波率。

5)θ波和θ节律:θ活动的波率为每秒4~7周波。波幅为20~40微伏,是正常儿童的主要脑电活动,两侧对称,颞区多见,可达25%,但不以纺锤样出现。

6)σ波:波率为每秒14~17周波的脑电活动。临床意义不明。异常波:

1)棘波:在走纸速度为3厘米/秒的纸速下,脑电波的电位变化呈陡直上升和下降,与a波相比呈极端尖锐的一种波,极性多为阴性,是癫痫的特异性、发作性放电现象之一,但棘波不是癫痫的同义语。棘波也可见于颅内炎症、脱髓鞘病及颅内肿瘤等,四个特点:1)上、下支均陡直;2)周期小于80毫秒,多为20-60;3)波幅一般在100-150微幅;4)突出于背景活动。

2)锐波:也叫尖波。是周期大于80毫秒,波幅大于100微伏,波顶比较尖锐的一种波,是皮质神经元的兴奋性增高所引起,其周期所以比棘波长可能是因为神经元同步性不够完善。阴性锐波对癫痫诊断有一定意义。也可见颅内炎症和颅内肿瘤等。二者区别:1)锐波不如棘波尖锐;2)棘波上、下支均陡直。锐波上升支陡直,但下降支略缓慢;3)周期不同:棘波80毫秒,锐波大于80毫秒(200毫秒以内)。4)临床意义略有不同:锐波表明病变深在或范围较广或位于健侧或位于远隔部位;5)锐波的背景活动异常程度较轻。)

3)三相波:典型的三相波第一相为较小的负相较尖锐的波,第二相为正相波,第三相为高于第一相的负相慢波,主要见于代谢障碍引起的脑病的昏迷前期,如:肝昏迷、尿毒症、胰腺炎、低血糖等。也可见于颅脑外伤和癫痫。

4)爆发性抑制:在平坦活动的背景上突然出现高波幅慢活动,有时可伴尖波发放,是大脑皮质广泛严重损害的表现。

异常波出现在时间上的方式:1)散在性:零星或单个出现;2)节律性:有规律地反复出现;3)杂乱性:无规律地反复出现;4)持续性:连续出现超过10秒;5)阵发性:突出于背景活动突然出现且突然消失。

异常波出现在空间上的方式:1)局限性:异常波局限于一个或一个脑叶;2)一侧性:异常波局限于一侧半球上;3)弥散性:异常波出现于两侧大片区域;4)广泛性:异常波出现于所有区域。

各频率脑波特点

各种频率脑波特点名称频率(Hz)波 幅(微伏)α 波8~13β波14~30又称快波θ波4~720~40不规则20~100.平均505~30.多在20以下 波 形常为正弦波有的呈弧形或锯齿形不规则 分 布枕.顶.颞后部见于各脑区,主要在额.颞中央部额.颞.顶有少量散在出现 特 点睁眼.计算.睡眠时受抑制或减弱.左右波率差部超过1.5Hz增多时多为脑皮层紧张度增高一种表现睡眠时增多.认为脑皮层紧张度 减低表现.深在皮层下病变产生双侧爆发性θ节律.经常存在 局灶性θ节律提示皮层病变δ波0.5~3尖波80~300ms棘波20~80ms10~20最高可达100不定不定不规则波顶较尖,上行快,下行较慢波顶尖锐,形似尖钉额.颞部低幅对称出现不定不定同上 见于癫痫.三相尖波发生于肝昏迷 脑外伤及癫痫脑细胞过度兴奋表现.负相来自大脑皮层.两相来自大脑皮质.正相从远处传来.见于癫痫注: θ.δ波均属慢波局限性慢波出现于局限性癫痫.脑肿瘤.脑脓肿.脑外伤性血肿和班有软化灶脑血管病等,有定位价值,弥漫性慢活动见于某些感染.中毒.低血糖.颅内压增高和各种原因引起的昏迷等 异常现象

⒈ 论任何年龄任何情况下出现发作性电波,局限性慢波或平直、高波幅13hz以上的快波;两侧显著不对称(波幅相差超过50%或枕部α指数相差超过50%或基本波动不同)。

⒉ 任何年龄清醒时出现高波幅3hz以下的δ节律。⒊ 成人记录中:

⑴出现连续或阵发的频率低于8周波的慢波或慢波指数在10%以上。⑵在额颞部出现波幅高于150微伏的α节律。⑶波动杂乱(节律失调)。

⑷深呼吸1分钟内诱起的高波幅δ节律并停止深呼吸1~2分钟后不消失。⒋ ⒋在儿童、少年记录中:

⑴2岁以上基本波动为4~5hz。

⑵4岁或更大的儿童枕部基本波动低于6hz。⑶5岁或更大的儿童枕部基本波动频率低于7hz。⑷6岁以上出现较多的4~5hz波动。

⑸7岁或更大的少年出现不规则、弥散、频率低于2hz的慢波。⑹9岁或更大的儿童枕部基本波动低于8hz。⑺10岁以上阵发性出现4、5hz波动。

正常成人清醒脑电图

正常人在安静状态下闭眼时的脑电图表现是由后部的α节律和前部的β节律组成,少量θ波散在,基本上没有δ波,脑电周期为100毫秒左右,两半球相应区的平均周期差不超过10%(频率差不超过2次/秒),振幅差不超过50%。α 波波幅最大不超过150微伏,对睁闭眼有抑制反应,β波波幅不超过50微伏,深呼吸诱发试验无病理波出现。

正常成人睡眠脑电图

各睡眠阶段脑电图特征国 际 分 期程度分期脑电图特点NS1浅睡眠期α 波消失,脑电图为低幅θ波和δ波的混和节律,后期出现顶尖波RES2轻睡眠期在S1脑电图改变背景上出现的梭形波和K综合波MSS3中睡眠期梭形波和高波幅慢波S4深睡眠期持续高波幅慢波R E M S清晨睡眠期低幅θ波和快波

正常成人脑电图分类

(1)α型脑电图:80%,a节律占优势,特别是枕、顶部的a节律占优势。步宽小于1.5周/秒。额区或各区可有少数低幅Beta(β)活动,Theta(θ)波不明显。

(2)β型脑电图:6%,β活动占优势、波幅可达50微伏,一般为20-30微伏,占据大脑各区。在Beta(β)活动中间有少量低至中幅a波及短程a节律。(3)低电压脑电图:10%,a波稀少且振幅低,不超过20微伏。Beta(β)波少而难于计算,结果低幅Theta(θ)波反而明显。视反应和过度换气后常出现a节律。

(4)不规则脑电图:第四型最少见,a节律不规则,在额部的a波振幅较高,步宽可达3周/秒,低幅Beta(β)活动较多。正常人占10%。第三、四型容易误认为异常。

小儿正常脑电图特点 小儿脑电图随年龄而异,但又没有明确的年龄界限。其特点是以慢波为起点,随年龄的增加频率逐渐增加即慢波逐渐减少,α波逐渐增加。诊断标准如下:

(1)清醒时不出现高波幅广泛性δ波。

(2)自然睡眠时不出现50微伏以上广泛性β波群。

(3)慢波不是恒定的在某一部位局限性出现。

(4)睡眠时的顶尖波、纺锤波、快波不应在一侧固定的欠缺或明显的控制。

(5)不应出现棘波或发作波 儿童异常脑电图的判定标准

1)出现棘波、尖波、病理复合波或高度失律,爆发性抑制、平坦活动。2)有局限性改变。3)两侧显著不对称。4)广泛性快波。

5)4岁以上枕部背景活动慢于6周/秒。9岁以枕部背景活动慢于8周/秒。6)6岁以上还有中等量的4周/秒。10岁以上还有中等量的4-8周/秒的波。

老年人脑电图特点

60岁以上的老人随年龄增加基本节律的频率逐渐减慢,而慢波和快波一般随年龄增加而增多,老年人的慢波通常是低幅较有规则的,有时具有一定的节律性。θ波不仅出现于颞部而且其它脑区也可见到。这种波率的改变与生理(年龄)或病理(脑动脉硬化)的改变有关。

影响脑电图的因素

1.外界各种刺激或精神活动可使α节律抑制而出现β活动。

2.酸碱平衡紊乱:碱中毒可出现高波幅慢活动;酸中毒可出现频率增快波幅增高。3.电解质紊乱:钾、镁离子↑可是脑波频率增快,钠、钾离子↓ 或钙离子↑出现慢波。

4.血糖:低血糖-当血糖下降到50-80毫克/dl(2.8-4.5mmol/L)时,脑电图频率及波幅增高,低于50毫克/dl时先是α节律变慢,而后依次出现θ波及δ波;血糖过高脑波频率略快。

5.代谢率增加时可出现α波频率增快。

6.缺氧:先是α节律变慢,随后出现慢波,严重时出现平坦活动。7.各药物的影响:(1)催眠药和弱安定药一般治疗量快波增多,剂量加大到病人入睡时,出现慢活动,但慢波之上仍重叠有很多快活动。剂量加大抑制癫痫脑电图;(2)强安定药一般治疗量出现大量慢波,波幅增高,快活动减少,同步化增强。如长时间大剂量服用氯丙嗪可出现癫痫样放电,;(3)兴奋药和抗胆碱能药一般治疗量脑波无变化,剂量加大脑波频率增快;(4)抗癫痫药:均可使癫痫患者脑电图得到不同程度的改善,抑制癫痫放电,并使快活动增多;(5)麻醉药包括吗啡、芬太尼可出现慢活动。

脑电图诱发试验

1.睁-闭眼:节律在睁眼时关弱或消失(抑制现象),而在闭眼时即又出现,波幅亦最高,因而该试验能:1)判断皮质兴奋性的程度:兴奋性增高,a波抑制现象加强;兴奋性降低时,a波抑制现象减弱。2)判断脑发育的程度:在儿童时期,随着年龄的增长a波抑制现象加强,脑发育不全患者a节律抑制现象减弱或消失。3)有助于病灶的定位诊断:视反应时,如病理波不抑制,表示病灶位于皮质浅部或电极附近;如病理波抑制则表示病灶在皮质深部或远离电极部位。4)诱发癫痫放电。

2.过度换气:过度换气是使肺泡内大量CO2呼出,血流中CO2深度下降,血流PH值上升,出现碱中毒状态。引起脑血管收缩、皮质乏氧,促使脑皮质神经细胞代谢的环境变化,在此状态下,可使常规脑电图中可疑的波形得到增强,有时可诱发出伴有临床发作的癫痫性爆发性活动,可以提高病理波出现的阳性率。异常的判断:1)提前反映(过度换气中的前一分钟内出现慢波爆发)属异常。2)恢复延迟(过度换气停止20分钟后仍未恢复背景活动或仍有异常慢波)属异常.3)过度换气中出现局限性高幅慢波属于异常。

3.闪光刺激:可诱发出发作性异常波,特别是光源性癫痫患者有时可诱发出光敏性临床发作。

4.睡眠诱发:约65%癫痫患者在睡眠诱发脑电图中出现某种形式的异常放电,使脑电图对癫痫诊断的阳性率提高到80%左右。这表明睡眠记录在临床的应用价值。5.剥夺睡眠:与正常睡眠相比睡眠不足本身能增加诱发的程度,在睡眠剥夺进行睡眠诱发试验能使癫痫相关异常放电的阳性率提高24%,故患者检查时最好有一定程度睡眠不足。

脑电图临床应用 1 帮助脑部疾病诊断及鉴别诊断,区别脑部疾病是器质性疾病或功能性疾病: 1)帮助癫痫诊断,区别癫痫与癔病或精神病,癫痫脑电图常可见痫样放电,还可帮助癫痫分类(各种癫痫有特异的脑电图改变),还可帮助区别癫痫是原发性或继发性(前者放电常对称同步,后者常见局限灶,放电不对称不步)。2)帮助鉴别昏迷是否由安眠药中毒所致,安眠药中毒常见高波幅快活动。3)帮助对脑炎的早期诊断,且某些脑炎如单纯疱疹脑炎、亚急性硬化性全脑炎、海棉状脑病有特殊周期波发放,故EEG有助确诊。

4)

帮助区别真性痴呆及假性痴呆,真性痴呆者EEG常有异常,慢波增多;假性者正常。

5)帮助判断癌肿颅内转移,颅内转移常可见局限或弥漫性慢波,也可有多灶表现。

6)帮助肝昏迷早期诊断,肝病者 EEG出现三相波,提示肝昏迷。其它代谢性脑病有时也可见三相波,应结合病史及其它检查确诊。

7)帮助确定晕厥为颈动脉过敏性,做EEG时加做压颈动脉窦试验,额叶出现慢波伴心率减慢、血压降低、头晕肢麻等不适

8)重复检查有助于脑血管病或脑肿瘤的区别。脑血管病一般数周后好转,脑肿瘤多继续恶化

2.帮助脑部病灶的定位诊断,EEG有助于区别病变为弥漫性、局限性或多灶性:临床定位征不明显时,常用脑电图检查作为检查颅内病变的筛查手段,故常用于颅内占位病变定位。病变在大脑半球近皮质者易定位,一般因其为功能定位,故比CT检查等解剖定位范围大,有时EEG改变先于形态改变利于早期诊断。EEG也可用于脑损伤的定位。

3.帮助了解脑部疾病的演变过程和功能状态:重复检查有助于了解病情好转、恶化或复发,如脑瘤术后EEG好转,随访中又恶化提示复发。

4.帮助判断疾病的疗效、估计预后及指导用药:如常用EEG作为判断癫痫疗效的指标,指导治疗是否还应继续或可逐渐减量或停药。各种脑部疾病治疗前后或手术前后EEG对照可了解疗效。脑病或脑炎等患者长期昏迷(器脑点)低平则提示预后不良。

5.帮助判断脑衰老或发育障碍及脑死亡:提示衰老者表现为不符合年龄的节律慢化,快波增多。发育障碍者慢波频率也常低与其实际年龄应有水平。临床表现昏迷,脑波平直无波,如排除机器故障,出外低文、麻醉药物所至24小时仍不能恢复者,应考虑脑死亡。

6.其它:可帮助判断麻醉深度,以免因抑制过深而不可逆转;可了解其它疾病脑功能改变如自发性低血糖发作时EEG可见慢波和或痫样放电;甲亢基本节律增快;幅可用于子痫监测;有时用于诈盲诈聋的判断。

成人轻度异常脑电图的判定标准及临床意义

判定标准:1)a节律不规则或波幅超过100微伏,频宽大于2周/秒。2)波幅出现明显的两侧不对称,枕部大于50%部位大于30%。3)慢波增多,额、颞部Theta(θ)波指数大于25%,其它部位Theta(θ)波指数大于10%,额部Delta(δ)波指数大于10%,其它部位Delta(δ)波指数大于5%。4)出现波幅大于50微伏的β活动或低幅Theta(θ)波和中幅Delta(δ)波。5)有少量不典型的尖波、棘波、棘-慢波、尖-慢波。6)视反应a节律不抑制,过度换气有提前反应或恢复延迟。临床意义:1)见于极少数正常人。2)正常人的生理变化,如:过度疲劳、血糖偏低等。3)全身其它系统的疾病,而中枢神经系统无病变。4)是某些中枢神经系统的早期或恢复期。5)见于脑震荡或只侵犯脑膜的病变等。

成人中度异常脑电图的判定标准及临床意义

判定标准:1)a节律频率变慢(7-8周/秒)或a波分布不正常(弥漫性a节律、a波前移)或Theta(θ)活动占优势。2)两侧经常有显著不对称的活动。3)中幅Delta(δ)波成串或成群出现。4)出现自发或诱发的棘波、尖波或病理复合波(棘-慢波、尖-慢波、三相波等)。临床意义:是由皮质和中枢神经系统器质性病变或脑病以及癫痫所引起。

成人重度异常脑电图的判定标准及临床意义

判定标准:1)广泛性Theta(θ)波、Delta(δ)波或β节律占优势,或杂乱。2)出现自发或诱发的棘波节律、尖波节律或病理复合波节律。3)出现爆发抑制或平坦活动;4)额颞部基本波动为波幅极高的α节律。

临床意义:见于比较严重的皮质病变、颅内病变或严重脑病。如:颅内压升高晚期、脑炎极期、严重脑外伤、脑血管病急性期、肝昏迷、尿毒症、心跳骤停复苏等。

各种疾病的脑电图表现 一.癫痫的脑电图

癫痫的脑电图的显著特点是出现痫样放电,其形式有:

1.散发棘波、尖波,均为刺激性病灶放电

2.棘-慢波、尖-慢波

3Hz棘-慢波是癫痫小发作特有脑电图改变。尖-慢波表示深部存在较广泛的癫痫原病灶。

3.棘波群、多棘波可见于癫痫大发作或肌阵挛性发作。4.多棘-慢波见于肌阵挛性发作和婴儿痉挛症。5.高度失率见于婴儿痉挛症

6.阵发性或爆发性节律放电:在原有脑电图背景上出现阵发性高波幅节律,可表现为高波幅δ节律、θ节律、α节律或β节律,也即任何频率的突然放电都可视为痫样放电,但对癫痫诊断价值不如前几种形式意义大。

(高幅失律、3Hz棘-慢综合波及2-2.5Hz棘-慢综合波诊断癫痫的可靠性为98%-99%。前颞棘波灶、半球棘波灶及多棘波灶之可靠性为87%-91%,额棘波灶及中颞棘波灶为79%-80%。6或14Hz正棘波只有32%为癫痫,成串慢波为39%,而弥漫性阵发慢波只有22%为癫痫。)不同癫痫类型脑电图:

1)单纯部分发作:发作期:限局性相应区发放,范围大于发作间,持续时间长,波形可能与发作间不同;发作间:限局性相应区发放。

2)复杂部分发作:发作期:一侧性或双侧性同步发放,常位于额颞区,也可扩散至两侧半球;发作间:一侧性或双侧性不同步发放,常位于额颞叶。

3)部分性发作继发全面性发作:发作期:限局性发放迅速扩散至两侧半球发放 ;发作间:限局性发放。

4)典型失神发作:发作时显示3Hz棘慢波综合,这在发作开始时出现,发作完了时消失。3Hz棘慢波综合在两侧大脑半球所有区域对称性同步地出现,其波幅通常在额、中央区显示最大,颞为其次,枕最小。眼睑、口轮匝肌,肢体等的节律性痉挛一般出现于棘慢波综合的棘波相。发作间歇期间的脑电图:失神发作患者的60%在发作间歇期显示正常脑电图,其余患者的脑电图多为轻度异常。在失神发作小儿常见的脑电图是枕、顶部有优势的6-8Hz波幅较高的基本节律,比正常小儿α波,其频率较慢,波幅较高为特点,有时在顶、额区出现单发性或爆发性3Hz慢波。此波一般是两侧同步,有时左右交替性或一侧性。

5)不典型失神发作:意识障碍的发生与结束较缓慢,可伴有轻度运动症状。发作时EEG可表现为慢的棘慢波综合节律。

6)肌阵挛性发作:发作的脑电图:发作波为典型的3Hz棘慢波者少见,多数是短暂、爆发性多棘慢波或不规则棘慢波,形式有三种:①出现1至数秒的连续性10Hz以上的爆发性节律波(强直性波形)。②脑电图振幅低平,成为平坦波型。③出现棘慢波或多棘慢波。发作间歇期的脑电图多显示重度节律异常即有持续性或阵发性、广泛性不规则的节律异常,特别是有高幅慢波、棘波、尖波、尖慢波、非节律性棘慢波等异常波不规则的交叉混合。

7)失张力发作:发作时和间歇期的脑电图多显示2Hz尖慢波综合,有时出现高度节律异常或不规则棘慢波。

8)强直-阵挛发作:发作时脑电图: 痉挛发作开始前数秒钟,基本节律的波幅将下降,成为低幅快波图型(激化图型)。然后在全部导联出现6-10Hz有规则的节律波(或节律性棘波),这在额、中央区最明显。此时可见患者在瞪眼、强直性痉挛在进行。在阵挛期,节律性棘波的连续性逐渐瓦解,在节律性棘波之间混进节律性慢波,成为不规则的多棘慢波,此时棘波出现于阵挛时,慢波在于肌驰缓时。

发作将完毕,此时的脑电图是平坦波,后逐渐恢复到发作前的脑电图。

发作间歇期的脑电图:据统计病例中显示正常脑电图约占20%-30%,但经过各种诱发方法,异常波出现率可达90%。发作间歇期的异常波有:(1)非阵发性异常波:主要是基本节律的慢波化和不规则化。慢波化有:①很轻度的慢波化:波幅不高的4-7Hzθ波的散在性出现;②轻度慢波化:有θ波联串的出现,主要见于额、顶部;③中度慢波化:θ波的持续性、广泛性出现、同时也有δ波增多;④高度慢波化:α波消失,基本节律成为θ波和δ波。2)阵发性异常波:广泛性棘波或棘慢波是最常见的发作波。发作完毕后脑电图显示平坦波,但将逐渐出现振幅较高的δ波,然后混进θ波和α波,最后恢复到发作前的图型。

二.颅内占位性病变的脑电图

颅内占位性病变尤其幕上的如肿瘤、脓肿、颅内血肿、脑转移瘤、寄生虫等引起周围脑组织的压迫、水肿、缺血、淤血等原因使周围脑组织发生了机能障碍而引起不同程度的脑电图改变,主要表现为大都有一侧或局灶性慢波(主要为 δ波或θ波)三.颅脑外伤的脑电图:分为早期(急性期或亚急性期)及晚期(慢性期)的改变。

早期脑电图的改变包括普遍性改变,如弥漫性波幅降低、波率变慢及δ波增多,甚至脑电沉默,对各种生理性刺激反应减弱或消失,快活动增多,大脑各区脑波失去独有式样。局灶性改变包括波幅降低,甚至出现等电(见于血肿、严重撕伤、皮下血肿或水肿)或波幅增高波率变慢或增高及波形改变。

晚期脑电图的改变从脑外伤三个月后开始脑电图所见与临床所见常不相符。病程在半年至数年时两者的不符率高达34%,其中12%临床正常而脑电图异常,13%临床异常而脑电图正常者称为Williams倒错现象。外伤后半年至一年时临床上正常者较多,但一年后则临床上异常者较多,所以学者多强调早期脑电图描记的重要性。第一个脑电图应于外伤后尽早描记,因早期的异常脑电图易于恢复而后期异常脑电图则否。

四.脑血管病的脑电图:脑血管病与颅脑外伤一样是一种病理动力过程,有其演变和消退。受损部位及面积大小在异常脑电图的产生上比病因更重要。脑血管病人的脑电图两侧差别非常明显,健侧多属正常,多次复查常见进步。可区别脑出血和脑血栓形成,可区别脑血管病和脑肿瘤,随访脑电图还可帮助脑血管病预后估计。

1.脑出血:急性期脑电图示严重普遍性改变及高波幅局灶性多形性慢波。普遍性改变一般几天后逐渐消退,局灶性δ波位于损伤部位则几星期、几月、几年才能消退。

2.脑血栓形成及脑栓塞

脑电图上普遍性改变甚少,局灶性改变为不规则δ波及θ波灶,其周围α活动减少或消失。大块的软化灶可表现为脑电沉默。这些改变常于两周后消失,也有逐渐加剧者。脑栓塞脑电图改变比脑血栓形成者较广泛,持续时间也较长.3.蛛网膜下腔出血

脑电图与临床所见极不相称,急性期可有普遍性θ或δ活动。如伴有脑实质撕裂或导致脑内出血,则于一、二天内在原有基础上出现局灶性棘波或慢波及局灶性脑波抑制。上述改变常于一周后消退,如局灶性改变继续存在说明有新的出血、脑内出血或脑梗塞出现。最终脑电图的改变多逐渐趋于正常。.4.慢性脑供血不足

(1)脑动脉硬化

脑电图表现有α节律的变化,可有低波幅快或慢活动,可有普遍性θ或 δ活动,也可有睁眼α波无抑制性表现。(2)高血压如无并发症脑电图多正常,严重者可出现较多β波或θ波。(3)低血压,如收缩压降至50~55mmHg可出现以额部为主的θ波,血压正常脑电也恢复。

5.偏头痛

脑电图慢活动与临床症状同时出现并同时消失时可能与局部缺血有关,如持续数小时或数天消失可能与局部水肿有关,如持续较长时间和发生长期局部神经症

关。

6.脑一时性供血不足

大脑血流由两侧颈内动脉及椎动脉供应,当发生脑一时性供血不足示脑电图可有局灶性或普遍性慢活动,但它持续时间甚短,症状较轻者脑电图正常。

脑部炎症的脑电图

1.脑膜炎

如病理过程仅限于脑膜,脑电图可无改变,但急性期常有不同程度脑炎存在故脑电图会出现弥漫性双侧慢波(儿童多显示3-5Hz波活动,成人3-7Hz波活动或不规则爆发)。一般持续一周消失,若久不消退则预后不佳,若δ活动突然增多应疑有脑积水可能。急性期脑电图改变在病人清醒期颇为显著,在睡眠时消失,所以病人宜在清醒时检查。

2.脑炎

急性脑炎多有双侧高波幅慢波,可有由于弥漫性血管反应及毒性反应引起的不规则广泛失律。在及严重的病例,脑波波幅甚低,形成平坦脑电图。3.急性播散性脑脊髓炎

脑电图显示弥漫性双额不慢活动或普遍性高波幅慢活动,有时双侧不对称,以左颞部为著。脑电图的改变指出大脑皮层或间脑投射系统有广泛的功能失调。并可为活跃的病理过程是否以告结束提供参考。

下载编程入门基础知识总结(合集五篇)word格式文档
下载编程入门基础知识总结(合集五篇).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    学习编程入门2

    接触编程有两年多了,也算积累了一些经验,希望能给刚入门的朋友一些帮助,文章仅代表本人观点,如有错误之处,还请多多包涵。 1.我该学什么语言? VB、VC、Delphi、Java……面对各种各......

    茶文化入门基础知识

    茶文化入门基础知识2020鼠年,因为疫情,新年伊始便充满坎坷与波折,让大家居家隔离便是是给国家做贡献的时候。悠长假期宅在家里,我们能做些什么呢?除了作息规律,健康饮食,网上工作和......

    电脑基础知识入门

    电脑基础知识入门 想学好电脑,就要从电脑的基础知识抓起,只有基础学好了,才可以在前进的路上走的更快,更好! 我以前对电脑也是义务所知,在21世纪的今天,在信息科技高速发展的今天,已......

    家庭理财入门基础知识

    家庭理财如何入门?惠卡宝年化收益率9%,随存随取是家庭理财必不可少的理财工具,下面为大家介绍家庭理财入门的知识。一、理财的基本概念何谓财富:财富从概念中分,主要包含了“自然......

    户外入门基础知识

    户外入门基础知识 大家对驴友这一词很感冒,都在四处打听怎样加入这一地下组织,玩一玩现今最为时尚的东东,不过却不知道如何下手,有驴友朋友的人还好,至少有人带入门,可没有......

    招标入门基础知识浅谈

    名人堂:众名人带你感受他们的驱动人生马云任志强李嘉诚柳传志史玉柱27、技术评标废标的条件? (一)投标文件不满足招标文件技术规格中加注星号("*")的主要参数要求或加注星号("*")的......

    化妆入门基础知识(精选合集)

    女人化妆是为了自己美,但更多的是想吸引男人的注意。奈何化妆的门道太多,很多想学习化妆的新手不知道该从哪儿入手,以下是小编给大家整理的化妆入门基础知识,希望对大家有所帮......

    PLC编程入门 个人总结 转载(共五则)

    新手学习PLC编程的入门建议 小小 本篇只供参考,借鉴。 鄙人原化工专业毕业的,后因工作需要,加之个人兴趣,才转行搞仪表、机械。十年前,我刚开始使用PLC时,也是一头雾水。仗着自......