文档库 最新最全的文档下载
当前位置:文档库 › C程序教案(第9章)

C程序教案(第9章)

【教学课题】

指针和指针变量

(第9章指针,1、2节)

【目的要求】

了解内存单元地址的概念和直接内存访问与间接内存访问的区别,理解指针的概念以及与指针变量的区别,掌握指针变量的定义、初始化及相应的运算。

【教学重点】

指针的概念,指针变量的定义,指针变量的运算

【教学难点】

直接访问与间接访问,指针变量与指针,指针变量的赋值运算和加减法运算

【教学方法】

任务驱动法,问题引导法

【教学手段】

讲授+多媒体演示+学生动手

【作业布置】

1、输入两个整数,求出最大值,要求用函数调用的方法实现,且函数参数为指针变量。

2、输入三个整数,按从小到大的顺序输出。要求用函数调用的方法实现,且函数参数为指针变量。

一、提出任务,引入课题

计算机存储器中保存了那么多数据,系统是如何准确找到所要的数据?

二、分析任务,讲授新课

(一)地址和指针(P139)

1、内存单元的“地址”

计算机所有信息都是以二进制的形式存储在存储器中,同时把8个二进制位规定为一个字节,也就是说存储器在存储信息时通常都是以字节为最小单位进行的,对应的,计算机系统把存储器划分成若干个以字节为单位的小块,这样的存储块通常就是存储信息的最小单

元,我们称之为存储单元,为了方便管理存储器中的各个存储单元,给每个存储单元一个编号,我们称之为存储单元的“地址”。内存上的存储单元又叫内存单元。

(图9-1,内存单元之与地址有如房间之与房间号码,邮箱之与邮箱编号)

2、数据在内存中的存储

(我们知道程序的处理对象就是各种各样的数据,这些数据通常先被赋值到相应类型的变量中,然后再对变量进行相应的操作,最终得出期望的结果,所以数据如何存放到内存上的变量空间中,我们有必要了解)

(1)变量的存储空间:程序中定义了变量后,程序在被编译的过程中,系统就为变量分配一定的内存空间(如:int型变量分配4个字节的空间,char型变量分配1个字节的空间);

(2)变量的地址(编号):变量所对应的内存空间的第1个字节的地址即为变量的地址(图9-2所示);

(3)变量地址的作用:

A、具有指向作用(通过地址可以准确找到对应的变量存储空间,从而找到变量中的数据);

B、隐含变量的类型(由地址的跨度可以了解这个变量的类型)

3、内存单元中数据的读取(2种访问形式)

(1)直接访问

直接根据变量的地址找到变量的值。如:printf(“%d”,a);

(如:你找人时知道受访对象的房间号,根据房号直接找到受访人)

(2)间接访问

先在一个位置(通常有存放地址的变量)找到变量的地址,然后根据地址找到相应的变量。如:指针变量的使用。

(如:你找人时不知道受访对象的房间号,只能先找传达室,再从传达式找到房号,最后根据房号找到受访人)

4、指针和指针变量

(1)指针:一个变量的地址称为该变量的指针,简单地说指针就是地址,是一个无符号整数,通过变量的指针即地址就可以找到变量的内存单元;

(2)指针变量:存放指针(地址,实际是一个数值)的变量就叫指针变量。

(3)说明:

A、指针变量有类型之分。指针变量的类型与存在它里面的地址所隐含的类型相同;

B、变量的指针是地址,即一个数值,指针变量是一个变量,用来存放指针(即地址)值的变量。

(二)指针变量(P140)

1、定义指针变量

(指针变量既然是变量,同样遵守变量的规则,即先定义后使用)

(1)定义格式:

数据类型*指针变量名1[,*指针变量名2……]

(2)举例:

int *p1,*p2;

float *p3;

char *p4;

(3)说明:

A、数据类型又叫基类型,是指指针变量所能存放地址的类型;

B、“*”是指针变量的定义标识符,只起标识作用,说明定义的变量是指针,并不是变量名的一部分;

C、指针变量名的命名规则遵守C中标识符的命名规则;

D、相同类型的指针变量定义时可以在一个语句里,但在每个指针变量名前都必须加“*”。

2、指针运算符(2个,P141)

(1)&:取地址运算符

A、格式为:&变量名

B、如:&a,&b[0],

又如:p=&a;(表示把变量a的地址放到变量p中,即使p指向变量a)

C、&运算符是单目运算符,遵循右结合性,且其后只能是变量或数组元素,不能为表达式或常量。

(2)*:取内容(值)运算符(又指针运算符或间接访问运算符)

A、格式为:*指针变量名。

B、如:int *p,i;

p=&i;(此句不能省,否则p没有指向)

*p=1;

C、这里的“*”表示指针所指存储单元的内容,不是乘号,也不是指针变量定义时的指针说明符,它是单目运算符,遵循右结合性。

D、如有语句:int a,*p;p=&a;

其中p表示指针变量,*p表示p所指向的变量a。

3、指针变量初始化(P142)

(1)格式:基类型指针变量名=初始化地址值;

(2)举例:char c;

char *p1=&c;

(3)说明:

A、指针变量使用前必须初始化,使指针变量指向一个明确的内存单元。(如上例中两条语句互换位置就不行)

B、指针所指向的内存单元的数据类型必须和指针的类型一致;

C、尽管指针值是数值,但不能随便把一个整数赋给指针变量。如:int *p=1000;是不行的;

D、指针值的输出格式符为:%p

4、指针的运算(P142)

(1)指针的赋值运算(有3种情形)

(赋值的目的就是让指针指向一个具体的对象,再进行相应的运算)

A、通过地址运算符(&)把一个地址赋给指针变量;

B、同类型指针变量间可以直接赋值。如:

int i;

int *p1,*p2;

p1=&i;

p2=p1;

C、给指针变量赋空值。当指针变量没有指向时可以给它赋空值(NULL)。如:

int *p1,*p2;

p1=NULL;

(说明:NULL是头文件stdio.h的预定义符,所以在使用前必须先用“#include ”先声明,同时NULL的代码值为0,所以“p1=NULL;”等价于“p1=0;”)

D、举例(例9-1)

(2)指针与整数的加减运算

A、移动指针:

当指针指向某个存储单元时,通过对指针单元加减一个整数,使指针指向相邻的存储单元,这样的运算称为移动指针。

B、移动指针时不是简单地将指针变量的原值(一个无符号整数)加减一个整数(以“1”为单位的加减运算),而是以它指向的变量所占的内存单元的字节数为单位进行加减的。

C、举例,有如下代码:

char *p_ch;

int *p_int;

double *p_double;

p_ch++;p_int+=5;p_double-=5;

(假设p_ch、p_int、p_double的指向单元的地址值分别为1000、2000、3000)

执行后,p_ch、p_int、p_double的指向的地址值分别变为1000+1=1001、2000+5*4=2020、3000-5*8=2960。

D、说明:移动指针时,是以指针加减“n”来表示,其中“n”表示的是相应类型的存储块的数量,并不表示存储块空间的大小。

(图9-3)

(3)两个指针变量相减

当两个指针指向同一数组元素时,两指针变更可以进行减法运算,其差就是两个指针间元素的个数。

(指针变量间的加法运算没有意义)

(4)两个指针变量比较

指向同一数组的元素的两个指针可以进行比较运算,主要用来判断数组元素位置的先后。

三、解决任务,学生实践

计算机存储器中保存了那么多数据,系统是如何准确找到所要的数据?

四、针对难点,重点突破

(一)直接访问与间接访问

(二)指针变量与指针

(三)指针的移动运算

五、拓展任务,学生实践

输入两个整数,输出最小数。要求采用函数调用的方法,函数参数为指针变量。

六、检查任务,评价学生

【教学课题】

指针与数组

(第9章指针,3、4节)

【目的要求】

了解数组指针和数组元素指针的概念与区别,理解指针的移动,掌握一、二维数组中元素的引用方法。

【教学重点】

数组指针与元素指针的概念,指针的移动,指针定义与元素的引用

【教学难点】

一维数组元素的引用,二维数组的理解,指针的移动,二维数组元素的引用

【教学方法】

任务驱动法,问题引导法

【教学手段】

讲授+多媒体演示+学生动手

【作业布置】

1、用选择法对10个整数排序(函数调用时形参实参均为指针变量)

2、求4个学生4门课程的总平均分(函数调用时形、实参均为指针变量)

一、提出任务,引入课题

程序中,使用变量时,变量都有相应的地址,指针变量可以指向相应的变量。同样包含若干元素的数组是否也有地址,也可以用指针指向数组和不同的元素呢?

如果指向数组有指针,指向不同元素也有指针,那么它们有什么关系呢?

我们知道可以用指针来引用变量,那么在数组中又如何用指针来引用数组元素呢?

二、分析任务,讲授新课

(一)指针与一维数组(P145)

1、指向数组元素的指针变量

(1)数组的地址和数组元素的地址

数组的指针:是指数组的起始地址(C中规定,数组名表示数组的地址,所以数组名实际上就是数组的指针);

数组元素的指针:是指数组元素的地址(也是起始地址)。

(2)数组元素的指针变量

A、概念:

存放数组元素指针的变量,就叫数组元素指针变量。

B、定义:

(与指向一般变量的指针变量的定义相同)

类型标识符*指针变量名

C、举例:

int a[10];

int *p;

p=&a[0];

D、说明:

上例中p=&a[0]表示把元素a[0]的地址放到p中,也就是说使p指向元素a[0],等价于p=a;另外要注意数组名a是一个地址常量,而p是一个指针变量。

2、数组元素的引用(P146)

(回顾指针移动P144,回到P146图9-5)

(1)举例(有如下代码)

int array[5],*p,*p1;

p=array;

p1=array+3;

分析:p1=array+3;等价于p1=&array[3];也等价于p1=p+3;

所以有:p+i和array+i就是array[i]的地址,即都指向array数组的第i+1个元素;

所以还有:*(p+i)和*(array+i)就是元素array[i]。

(2)一维数组元素的引用方法(两类四种,以前面例题为基础)

下标法:array[i]、p[i]

指针法:*(array+i)、*(p+i)

(3)具体应用(P147)

任务1:输出一数组中的全部元素(要求分别四种引用方法实现);

任务2:改变指针变量的值来依次输出数组元素

(4)说明:数组名是一个地址常量,千万不能在程序中出现往数组名中赋值的运算。

(二)指针与二维数组(P148)

1、二维数组的组成

(1)概述

二维数组是一种特殊的一维数组,这种一维数组的每个元素又都是一维数组,即二维数组是以一维数组为元素的一维数组。

(2)举例

int a[3][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11}};

分析:

首先,a 是一个数组名,这个数组包括3行,看成是3个元素:a[0]、a[1]、a[2],如下图所示:

其次,数组a 中的元素a[0]、a[1]、a[2]事实上不是一个单一的数据,而一个由4个元素组成的一维数组,所以数组a 事实上如下图所示:

二维数组中的一维元素a[0],a[1],a[2]实事上是一个个地址,也就是一个指针,所以

本质上说二维数组是一个指针型的一维数组。那么二维数组名a 是一个指针,并且是一个指向一维数组的指针,而a[0]也是一个数组名,也就是一个指针,它则是一个指向具体的整型

a

a

元素(整型变量)的指针。如果要定义等价的指针变量,则定义方法分别如下:int (*p)[n];

int *p;

(说明:上图右表单元格分别是元素名称,值,地址值)

2、二维数组的地址

(1)从上图可以看出,a是数组名,代表地址,a[0]、a[1]、a[2]也是数组名,同样也代表地址,只有a[i][j]才是元素名,代表具体的元素。

(2)a、a[0]、&a[0][0]的值相等,是整个二维数组的起始地址,是第一行元素的起始地址,也是第一个元素的地址;

a[1]是第二行元素的起始地址,与&a[1][0]的值相等;

a[2]是第三行元素的起始地址,与&a[2][0]的值相等。

(3)a+0的值与a[0]相等,即有*(a+0)等价于a[0]

a+1的值与a[1]相等,即有*(a+1)等价于a[1] 所以有:*(a+i)等价于a[i]

a+2的值与a[2]相等,即有*(a+2)等价于a[2]

(P149,图9-8所示)

(4)二维数组地址、元素、值的关系见下表

3、二维数组元素a[i][j]的地址表示

(1)&a[i][j]

(2)a[i]+j

(3)*(a+i)+j

(4)&a[0][0]+4*i+j(因为a[i][j]与a[0][0]之间相差4*i+j个元素)

(5)a[0]+4*i+j

4、二维数组元素的引用

(1)*(&a[i][j])

(2)*(a[i]+j)

(3)*(*(a+i)+j)

(4)*(&a[0][0]+4*i+j)(因为a[i][j]与a[0][0]之间相差4*i+j个元素)

(5)*(a[0]+4*i+j)

5、具体应用(P150)

任务3:利用地址遍历二维数组(要求采用5种引用方法,例9-4)

(此任务中,元素的引用能否写成:*(a+4*i+j?)

任务4:使用指针变量输出数组元素值。(例9-5)

(此任务中,如果p的初值为a,a[0]可以吗?)

三、解决任务,学生实践

(一)数组是否有地址,是否可以用指针指向数组和元素?

(二)数组指针和元素指针有什么关系?

(三)在数组中如何用指针来引用数组元素?

四、针对难点,重点突破

(一)数组指针与元素指针的概念;

(二)一维数组元素的引用;

(三)二维数组的理解;

(四)指针的移动;

(五)二维数组元素的引用

五、拓展任务,学生实践

输出二维数组中任一行和任一列元素的值(行列号从键盘输入),要求1、用常见的元素引用方法实现a[i][j];2、用数组名引用实现*(*(a+i)+j);3、用数组指针变量引用实现*(*(p+i)+j)

六、检查任务,评价学生

【教学课题】

指针与字符串,指针数组

(第9章指针,5、6节)

【目的要求】

搞清字符串指针、数组指针、指针的指针的概念,掌握其定义的方法,能在程序中使用相应的指针解决问题。

【教学重点】

字符串指针与字符数组的区别,指针数组与数组指针不同,指针的指针的理解。

【教学难点】

指针数组与数组指针,指针的指针,各类指针有灵活运用。

【教学方法】

任务驱动法,问题引导法

【教学手段】

讲授+多媒体演示+学生动手

【作业布置】

1、用函数调用的方式实现字符串复制(用字符数组作形参)

2、用函数调用的方式实现字符串复制(用字符指针变量作形参)

一、提出任务,引入课题

C语言中,字符串是如何保存和引用?

作为存放在内存上的一连串字符,是否也可用指针指向它?

对于一般的变量都可用指针指向它,那么对于指针变量是不是也有相应的指针指向它呢?

二、分析任务,讲授新课

(一)指针与字符串(P151)

1、字符串的表示形式(两种)

(1)字符数组存放字符串(第6章第4节已讲)

例如:输入一个人的姓名,并输出。

(2)字符指针指向字符串

(我们把指向字符串的指针简称为字符串指针)

2、字符指针指向字符串(串指针)

(1)字符指针的定义

A、格式

char *串指针变量名=串常量;

或char *串指针变量名;

串指针变量名=串常量;

B、例如

char *string=”china”;

等价于:char *string;

string=”china”;

C、说明

语句:char *string=”china”;的含义表示:定义一个串指针,指向字符串”china”的第一个字符;

(此时string的值就是第一个字符”c”的地址)

用串指针输出字符串时,可以用%s来实现,但输入则不能(输出时,系统的执行过程,指针会自动后移,直到’\0’)。

D、具体应用

例9-6:将字符串a复制到字符串b(用字符数组的形式实现)

例9-7:将字符串a复制到字符串b(用串指针变量来实现)

3、字符指针与字符数组的区别(P152)

(1)字符指针与字符数组所存放的内容不同(如图9-10、9-11所示);

(2)赋值方式与赋值内容不同

字符数组:char str[20]=”china”;(定义时赋值)

scanf(“%s”,str);或gets(str);(利用输入函数赋值,不能用于串指针)也可以建立循环逐个元素赋值。

串指针:char *str=”china”;(定义时赋值)

char *str;

str=”china”;(此法不能用于字符数组)

(3)一旦定义一个数组,它就有确定的地址。相反,若只定义指针,而未给其赋值,则其指向不确定,下面语句是错误的。

Char *str;

Scanf(“%s”,str);

(4)字符指针变量的值可以改变,而数组名是一个地址常量,其值固定不变。

有如下代码:

main()

{

char *a=”I love China!”;

a=a+7;

printf(“%s”,a);

}

请结果如何?又假如把字符指针a改成数组a[100],结果又怎样?

(二)指针的指针(P154)

1、指针数组

(1)概念

存放内存单元地址(指针)的数组,称为指针数组。

(指针数组中每元素都是同类型的指针变量)

(2)定义

存储类型数据类型 *数组名[元素个数];

(3)举例

char *p[3];

(定义了一个数组名为p,大小为3的字符型指针数组。实际中通常用指针数组来存放多个字符串)

(4)具体应用

例9-8,按字母顺序从小到大输出国名。

(分析:字符串的内存分布,图9-12,P156)

(5)说明:

指针数组:元素为指针的数组。char *p[3];(定义了一个数组p,里面有3个元

素,并且都是指针)

数组指针:指向数组的指针。char (*p)[3];(定义了一个指针p,指向含3个元素的字符数组)

2、指向指针的指针(P156)

(1)概念

指向指针数据的指针,简称为指向指针的指针。

(常用的指针变量都要占用内存单元,这个单元同样有地址,这个地址就是指针的指针;指针数组的数组名也是指针的指针)

(2)定义

格式:数据类型 **变量名;

(3)举例

int *p1,a=1;

int **p2;

p1=&a;

p2=&p1;

printf(“a=%d”,*p1);

printf(“a=%d”,**p2);

printf(“a=%d”,*p2);

(4)具体应用

例9-9,用指针的指针输出5个字符串(P157)

三、解决任务,学生实践

(一)C语言中,字符串是如何保存和引用?

(二)作为存放在内存上的一连串字符,是否也可用指针指向它?

(三)对于一般的变量都可用指针指向它,那么对于指针变量是不是也有相应的指针指向它呢?

四、针对难点,重点突破

(一)字符串指针与字符数组的区别

(二)指针数组与数组指针不同

(三)指针的指针的理解

五、拓展任务,学生实践

(一)用函数调用的方式实现字符串复制(用字符数组作形参)(二)用函数调用的方式实现字符串复制(用字符指针变量作形参)六、检查任务,评价学生

【教学课题】

函数指针

(第9章指针,7、8节)

【目的要求】

掌握函数调用时,如何用指针做形参和实参,理解程序执行过程中参数的传递,了解函数指针、指针函数以及main函数的参数。

【教学重点】

函数调用时,参数的传递(值传递、地址传递),灵活运用指针作参数

【教学难点】

参数的传递,函数指针,指针函数

【教学方法】

任务驱动法,问题引导法

【教学手段】

讲授+多媒体演示+学生动手

【作业布置】

1、统计一组学生的总成绩(要求用指针作参数)

2、实现矩阵的转置(要求用指针作参数)

3、现字符串的反序输出(要求用指针作参数)

一、提出任务,引入课题

第7章,我们学习了函数,知道在C程序中,常常通过调用函数来完成某个功能或实现某个操作,并且在调用函数时经常要用到实参和形参来传递数据。在本章,我已经学习了指针,那么是否可以在函数调用时用指针来做形实参呢?具体又是如何实现的呢?

一般用户定义的函数或一些库函数都有形参,那么作为必不可少的main函数是否也有形参呢?

二、分析任务,讲授新课

(一)指针与函数(P158)

1、变量指针作函数参数

(1)一般变量作参数

例9-10:用函数调用的方法,交换两个变量的值。(可先不用函数调用的方法实现)(分析程序执行过程中,参数的传递,P159,图9-16)

(2)指针变量作参数

例9-10:要求用指针为参数,用函数调用的方法,交换两个变量的值。

(分析程序执行过程中,参数的传递)

(3)说明

调用函数时,实参向形参通常都是单向的值传递。当参数为指针时,传递的是地址,这样的传递又称为“地址传递”。

2、一维数组名作函数参数(P160)

(1)用数组名作实参

例9-12:统计一组学生的总成绩

(分析:用数组的第一个元素存放总成绩)

(2)用数组指针作形参和实参

(学生动手完成)

(3)说明

A、数组名可以作形参、实参,数组指针也可作形参、实参,同时数组名和指针还可以交叉作形参、实参;

B、数组名是一个地址常量,不能为其赋值。

3、二维数组名作函数参数(P161)

(1)用二维数组名作参数

例9-13:实现矩阵的转置

(2)用指针作参数

实现矩阵的转置

(学生动手完成)

(3)说明

A、当用指针作形参时,不能定义成一般的指针变量,必须定义成指向一维数组的数组指针(int (*p)[3]);

B、定义形参时,列下标不能省略。

4、字符指针作函数参数(P162)

(1)用字符数组名作函数参数

例9-14:实现字符串的反序输出

(2)用字符指针作函数参数

(学生自己动手完成)

(3)说明

A、当用字符指针用实参时,要确保字符串有明确的存储单元;

B、数组名和指针作参数时,传递的都是地址,不是简单的值的单向传递。

5、指针函数(P163)

(1)概念

返回值是指针的函数,称为指针函数。

(2)定义格式

数据类型*函数名(参数表)

{ }

(3)例如

int *fun(int a,int b)

{ }

6、函数指针(P164)

(1)概念

指向函数的指针称为函数指针。

(函数的代码保存在程序区中,占有内存空间,同样有地址)

(2)定义

数据类型(*指针变量名)(形参列表);

(3)举例

int (*fun)(int a,int b);

(表示定义了一个函数指针变量fun,它指向的函数有两个整型形参,返回值是整型数据)

int *fun(int a,int b);

(表示定义了一个指针函数fun,返回值为整型指针,带有两个整型形参)

int *p[3];(表示定义了一个指针数组p,元素是3个整型指针变量)

int (*p)[3];(表示定义了一个指针变量p,指向由三个元素组成的整型数组,常用于二维数组一维化)

(4)具体应用

例9-15:求两个数中的最大数(P165)

(二)main函数中的参数(P165)

(main函数中可以跟参数,通常是:main(int argc,char *argv[]))

1、参数数量和种类

(1)参数数量:通常只有2个

(2)参数种类

一个为整型变量,变量名由用户确定;

一个为指向字符串的指针数组。

2、参数的作用

参数中的整型变量用于存储命令行的参数个数,指向字符串的指针数组用于存储命令行的各个参数。

3、具体应用

(1)编写好程序代码,并生成出.EXE文件;

(2)进行DOS状态,运行程序即可。

4、说明

事实上,main函数中还可以有第3个参数char *envp[] ,用于取得系统的环境变量。

三、解决任务,学生实践

(一)函数调用时用如何用指针形实参?

(二)main函数是否也有参数?

四、针对难点,重点突破

(一)参数的值传递和地址传递(传址、传值)

(二)函数指针

(三)指针函数

五、拓展任务,学生实践

(一)统计一组学生的总成绩(要求用指针作参数)

(二)实现矩阵的转置(要求用指针作参数)

c语言电子教案(课件)

c语言电子教案《程序设计基础》教案

第一章程序设计和C语言课题C语言概述教案 号 1 教学目的1、了解C语言出现的历史背景 2、掌握C语言程序的结构、书写格式和上机步骤 教材分析教学重 点 C语言程序的结构 教学难 点 上机步骤 课时安 排2教学方 法 讲授与演示法 相结合 教具计算机、投 影仪

教学内容及过程设计一新课引入 从计算机应用基础中学过的计算机语言及语言处理系统引出C语言。 二讲授新课 一、 C语言出现的背景 二、 C语言的特点 1。语言简洁、紧凑,使用方便、灵活; 2。运算符丰富 3. 数据类型多(整型、实型、字 符型、数组类型、指针类型、结构体类型、 共用体类等) 4. 具有结构化的控制语句 5. 语法不太严格,自由度大 6.既是高级语言,又具有低级语言的功能 7.成目标代码质量高,程序执行效率 8.可移植性好 三、C语言程序构成(采用程序实例加以说明,并提倡良好的程序设计书写风格) 1. C语言是由函数构成的,至少有一个main()函数; 2. 每个函数由函数首部和函数 体组成;函数体由说明语句、执行语句组 成; 3. 每个C程序从main()函数开始执行,并在main()中结束; 4. 每个语句和数据定义的最后必须加分号; 5. C程序无输入、输出语句:输入功能由scanf()函数完成;输出功能由 printf()函数完成; 6.可加注释/*……*/ 四、上机步骤(上机环境:Turbo C 2。0) 1.进入环境 2。编辑源程序3。保存源程序4. 编译源程序 5.执行程序,查看结果6.退出C环境

备注安排上机实验,熟悉TC环境及简单的 C语言程序构成 页码1 第二章算法-—程序的灵魂 课题算法教案号2 教学目的1、了解算法的概念 2、掌握结构化程序的三种基本结构,及算法的表 示方法 教材分析教学重 点 算法的表示方法 教学难 点 结构化程序的三种基本结构 课时安 排2教学方 法 讲授与演示法 相结合 教具计算机、投 影仪

c语言电子教案

程序设计基础》教案

第一章程序设计和 C 语言

1、了解算法的概念 2、掌握结构化程序的三种基本结构,及算法的表示方法 一 复习引导 从C 程序的构成到C 程序的设计过程 二 讲授新课 一个程序包括以下两方面内容: 1. 对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结 构; 2. 对操作的描述。即算法,为解决一个问题而采取的方法和步骤。 著名计算机科学家 Wirth 提出一个公式:数据结构+算法=程序 一、简单的算法举例 例 1 :设有两个杯子 A 和 B ,分别盛放酒和醋,要求将它们互换。 S1:C ← A S2:A ← B S3:B ← C 例 2 :求 1~100 的和 S1:sum ←0,t ←1; S2:sum ←sum+t S3:t ←t+1 S4:若t <= 100,则转到 S2,否则转到 S5; S5:输出 sum ,结束。 二、算法的特征 1、有穷性; 2、确定性; 4、 有一个或多个输出; 三、算法的表示 1、 用自然语言表示算法–通俗易懂,但有“歧义”。 2、 用传统流程图表示算法–直观、易懂。 程序的三种基本结构:顺序结构、选择结构、循环结构 页码 课 题 教 学 目 的 教 材 分 析 课时安排 过 程 设 计 备注 算法 教案号 2 教学重点 算法的表示方法 教学难点 结构化程序的三种基本结构 2 教学方法 讲授与演示法相结合 教具 计算机、投影仪 3、 有零个或多个输入; 5、 有效性;

算法 教案号 2 教 学 1、了解算法的概念 2、掌握结构化程序的三种基本结构,及算法的表示方法 3、N-S 流程图表示算法 教 学 内 容 及 过 程 设 计 当P 成立 4、 用伪代码表示算法 5、 用计算机语言表示算法(即实现算法) 四、结构化程序设计方法结构化程序设计方法强调: 程序设计风格和程序结构的规范化,提倡清晰的结构: ①自顶向下 ②逐步细化 ③模块化设计 ④结构化编码 三、课堂小结 1、 程序的三种基本结构:顺序、选择、循环 2、 5 种描述算法的方法,关键是 N-S 图 3、 灵活运用三种基本结构,学会结构化的程序设计方法 四、布置作业 用 N-S 图表示求解以下问题的算法: 1、求 10! 2、将100~200 之间的素数打印出来 3、求两个数 m ,n 的最大公约数 备注 安排上机实验 页码

相关文档
相关文档 最新文档