程序语句(精选4篇)
程序语句 篇1
0 引言
编译程序的基本任务就是将源语言翻译成等价的目标语言程序。编译程序完成从源程序到目标程序的翻译工作,是一个复杂的整体的过程。语法和语义分析在编译程序中占有十分重要的地位,如何实现语句处理是十分关键的。对此,本文提出了一种运用反填技术的语句处理实现算法,解决了语义分析中对语句真假出口的判断问题,具有很高的使用价值。
1 编译系统的基本结构
将编译过程划分成了词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成六个阶段。
1.1 词法分析
词法分析将源程序从左到右逐个字符地读入,并对构成源程序的字符流进行扫描和分解,从而识别出一个个单词符号的过程,是语法语义分析的基础。
1.2 语法分析
语法分析的任务是在词法分析的基础上将单词序列分解成各类语法短语,如“语句”、“表达式”、“分程序”等。一般这种语法短语可以用语法树来表示。语法分析所依据的是语言的语法规则,即描述程序结构的规则。通过语法分析确定整个输入串是否构成一个语法上正确的程序。
1.3 语义分析
语义分析是审查源程序有无语义错误,为代码生成阶段收集类型信息,如果发现不符合语言规范的情况,编译程序应报告出错。有些编译程序将语法分析和语义分析不予区分,同时进行。
1.4 中间代码生成
在进行了上述的语法分析和语义分析阶段的工作之后,有的编译器将编译程序变成一种内部表示形式,这种内部表示形式叫做中间语言或中间代码。
1.5 代码优化
在此阶段的任务是对前阶段产生的中间代码进行变换或进行改进,使目标代码各位高效,从而节省时间和空间。
1.6 目标代码生成
这一阶段的任务是把中间代码变换成特定机器上的绝对指令代码或可以重定位的指令代码或汇编指令代码。
以上就是编译程序的六个阶段,其中,语法和语义分析在编译程序中占有十分重要的地位,而在此分析过程中语句处理是关键和繁琐的。本文对编译程序中语句处理部分给出了一种全新的实现算法,运用了反填技术,解决了语义分析中对语句真假出口的判断问题,具有很高的使用价值。
2 编译程序中的语句处理思想
2.1 文法
这里主要介绍C语言语句处理算法的处理思想和文法规则:
2.2 语法图
C语言语句处理部分的语法图如图一所示。
3 语句处理的实现算法
3.1 子程序调用语句处理算法
进入语句处理程序首先读入一个单词,并记录为sym;首先判断sym是否是函数名ident,如果是则转入子程序调用语句处理部分进行处理,否则向下判断;
3.2 输入输出语句处理算法
判断是否是输入输出语句的标识符scanf或printf,如果是则转入输入输出语句处理部分,否则向下判断;
3.3 条件判断语句处理算法
判断是否是表示条件判断语句的标识符ifsym,如果是则转到条件判断语句部分进行处理,否则向下判断;
3.4 循环语句while处理算法
判断是否是表示循环语句的标识符whilesym,如果是则转入循环语句while部分进行处理,否则向下判断;
3.5 循环语句do while处理算法
判断是否是表示循环语句的另一个标识符dosym,如果是则转入循环语句do while部分进行处理,否则向下判断;
3.6 选择语句switch处理算法
判断是否是表示选择语句的标识符switchsym,如果是则转入选择语句处理部分进行处理,否则向下判断;
3.7 循环语句for的处理算法
判断是否是表示循环语句的另一个标识符forsym,如果是则转入循环语句for部分进行处理,否则向下判断;
3.8 赋值语句或自加自减语句的处理算法
判断是否是表示赋值语句的标识符a d d s e l f或minusself或ident,如果是则转入赋值语句部分进行处理,否则向下判断;
4 结束语
程序是由各种功能的语句按照一定的方式叠加而成,对程序的编译更离不开对语句的处理。本文提出的语句处理算法,运用了反填地址的技术,解决了语句处理过程中判断真假入口的难题,具有很高的使用价值,为实现其它语言的编译程序奠定了基础。
参考文献
[1]张素琴,等.编译原理(第2版)[M].北京:清华大学出版社,2007.
[2]孙悦红.编译原理及实现[M].北京:清华大学出版社,2005.4.
[3]温敬和.编译原理实用教程[M].北京:清华大学出版社,2005.4.
程序语句 篇2
经历了从dBASE、FoxBASE、FoxPro直到VFP的发展过程。本文便以VFP 6.0为例介绍它的命令、函数
及程序语句,为学习VFP的朋友提供必要的学习参考,也为已经精通VFP的朋友提供复习的好机会。
一、主要命令:
1、CREATE 作用:建立一个新的表。
格式:CREATE [<文件>|?](注意,命令字符可取前面四个字符,后面可省略不写,即CREA,下
同;中括号表示其中的参数是可选的;|管道符号表示两个参数只能选择一个,不能同时选择,下
同。
说明:文件指建立以.dbf为扩展名的VFP数据库文件,在命令后面加上一个问号表示系统会弹出
对话框,要求用户输入想要建立的表名。在命令中不加文件名或问号系统也会弹出对话框,要求用
户输入想要建立的表名。
2、MODIFY STRUCTURE
作用:显示表文件结构,并允许修改此表的结构。格式:MODIFY STRUCTURE 说明:只有在用USE命令打开表文件以后,才能显示或修改表文件的结构。
3、APPEND 作用:在当前表的尾部(无论表中有无记录追加记录(在当前表指当前正使用的表。
格式:APPEND [BLANK] 说明:在APPEND命令后面加上BLANK参数表示在当前表的尾部添加一条空白记录。无BLANK 参数
时,表示在当前表的尾部添加一条记录并要求用户输入相应的字段内容。
4、INSERT 作用:在表文件中间插入一个新记录。格式:INSERT [BEFORE] [BLANK] 说明:INSERT 在当前记录后插入一记录;INSERT BEFORE 在当前记录前插入一记录;INSERT BEFORE BLANK 在当前记录前插入一空记录。INSERT-SQL命令追加记录
INSERT INTO 表名[(字段1[,字段2…]];VALUES(表达式1[,表达式2…]
例:INSERT INTO XS(XH,XM,XB,XIMING VALUES(“950106”,“高山”,“男”,“”
5、UPDATE 作用:修改数据
update <表名> set <字段1=表达式1>,<字段2=表达式2...> where <条件> 例: update <表名> set <字段1,字段2...>=<表达式1,表达式2...> where <条件>
6、BROWSE 作用:主要用于打开浏览窗口,查阅表文件并同时进行修改。格式:BROWSE 作用:打开一个“浏览”窗口,供用户浏览或修改记录。格式:BROWSE [FIELDS <字段名表>]
7、USE 作用:打开和关闭表文件。格式:USE [<文件名>] USE 说明:前一个命令用来打开<文件名>指定的表文件,该表如有备注型字段,则同时打开相应的
备注文件(.fpt文件;后一个命令关闭当前打开的表文件。
8、LIST和DISPLAY
作用:显示表(.dbf的内容、结构或状态。
格式:LIST|DISPLAY [OFF] [<范围>] [FIELDS] <表达式表> [WHILE <条件>] [FOR <条件>] [TO PRINT|TO FILE <文件>] LIST|DISPLAY STRUCTURE TO PRINT|TO FILE <文件> LIST|DISPLAY STATUS [TO PRINT|TO FILE <文件>] 说明:命令带OFF参数表示不显示记录号,范围指定对哪些记录进行操作,范围包括:RECORD n 第几号记录、NEXT n 当前记录开始的几个记录、REST 自当前记录开始至文件末尾的所有记录、ALL 所有的记录。不选范围则隐含范围为ALL;FIELDS后跟字段名,字段名与字段名之间用逗号分
隔。WHILE后跟条件,FOR后面也跟条件,区别是,WHILE后的条件如果不满足,便停止查找;FOR后的条件查找所有满足条件的记录。TO PRINT和TO FILE <文件>分别表示将显示结果在打印机上打印出
来和将显示结果输出到文件。
格式中,下面两个命令分别为显示表结构(STRUCTURE和工作状态(STATUS。注:LIST命令一次连续显示完所有记录内容。DISPLAY命令在显示记录满屏后,要求用户按
任意键继续显示。如果LIST与DISPLAY都无任何选择项时,LIST显示文件的全部记录, DISPLAY仅显示当前记录。
9、记录的定位
作用:用记录指针(POINTER定位记录。格式: 1GO[TO] RECORD n|TOP|BOTTOM 命令定位 GO [RECORD] N GO BOTTOM GO TOP 2n 3SKIP [+|-] n 说明:第一个命令又叫绝对定位,其中,RECORD n定位到n号记录,TOP定位到第1个记录, BOTTOM定位到最后一个记录。第二个命令定位到第n个记录,n是一个数值。第三个命令又叫相对定
位,它以当前记录为基准前移(-或后移(+n个记录,不选任选项,则默认记录指针后移一个记
录。
LOCATE [<范围>] FOR <表达式> 范围: ALL NEXT N RECORD N
REST
10、CHANGE和EDIT 作用:显示要编辑或修改的字段。
格式:CHANGE|EDIT [<范围>] [FIELDS <字段名表>] [WHILE <条件>] [FOR <条件>]
11、REPLACE 作用:用表达式的值代替命令中与之相对应的字段的内容。
格式:REPLACE [<范围>] <字段1> WITH <表达式1>[,<字段2> WITH <表达式2>] [FOR <条件> ] [WHILE<条件>] 例:USE B2-1 REPLACE ALL 工资 WITH 工资+200 FOR 工资<1000 BROW
12、DELETE、PACK、ZAP和RECALL 作用:分别是给要删除的记录作删除标记、彻底删除、删除所有记录和取消被选中的表记录的
删除标志。
格式:DELETE [<范围>] [WHILE<条件>] [FOR <条件>](特例:DELETE FILE FILENAME.DBF,该命令删除指定的表文件
PACK
ZAP RECALL [<范围>] [FOR <条件>] [WHILE<条件>]
13、SORT和INDEX 1SORT 作用:是建立一个其记录以新的物理顺序排列的新表文件,原文件不变.格式:SORT TO <文件名> ON <字段名1> [/A] [/C] [/D][,<字段名2> [/A] [/C] [/D>...[ASCENDING|DESCENDING] [<范围>] [FOR <条件>] [WHILE<条件>] [FIELDS<字段表>] 2INDEX 作用: 对当前表根据关键字表达式的值从小到大排列,并存入TO后指定的索引文件名的文件或复合索引文件的一个标识中。
格式: INDEX ON <关键字表达式> TO <文件名> INDEX ON <关键字表达式> TAG <标识名> [OF <文件名>] [FOR <条件>] 说明:第1个命令中,/A按字段名升序排序,/D按字段名降序排序,/C忽略大小写,针对字符型
关键字而言,ASCENDING和DESCENDING分别表示升序和降序。第1个命令建立.dbf表文件,第2个命令建立.idx单一索引文件,第3个命令建立.cdx复合索引文件(Compound Index。
删除索引
DELETE TAG ALL [OF 复合索引文件名]
DELETE TAG 索引标识1 [OF 复合索引文件名1][,索引标识2 [OF 复合索引文件名2>…
14、USE <表文件名> INDEX <索引文件名表>、SET INDEX TO和SET ORDER TO 作用:分别是打开表文件的同时打开索引文件、打开索引文件和改变主索引。并确定第一个索引文件为主控索引文件.(当前起作用的索引文件称为主控索引文件, 当前起作用的索引标识称为主控索引
格式:USE <表文件名> INDEX <索引文件名表> SET INDEX TO [<索引文件名表>] 作用:打开当前表的一个或多个索引文件并确定第一个索引文件为主控索引文件,该命令用于单索引文件.格式:SET INDEX TO [<索引文件表>] [ADDITIVE] 说明:(1[<索引文件表>]中第一个索引文件为主控索引文件.(2若缺省ADDITIVE选项,则在用本命令打开索引文件时,除结构复合索引文件以外的索引文件均被关闭
SET ORDER TO [<数值表达式>]|[<单索引文件名>]|[TAG] <索引标识> [ASCENDING|DESCENDING>(特例:重新索引命令:REINDEX 作用:对于打开表时自动打开的复合索引文件确定主索引,也能确定主索引文件.(1 数值表达式表示已打开的索引的序号.系统先为单索引文件编号,故结构复合索引文件的序号比单索引文件大.(2 SET ORDER TO 或 SET ORDER TO 0命令取消主索引和主索引文件,表中记录将按物理记录输出.15、CLOSE INDEX 或 SET INDEX TO 单独关闭索引文件,并不关闭与之相关的表文件
16、FIND、SEEK和LOCATE及CONTINUE 作用:前两个命令FIND和SEEK是在一个已经建立了索引文件的表中,定位到关键字中的内容与命
令行中字符串相同的第一个记录。后一个命令在用USE打开表文件以后,直接查询表中字段内容。
格式:FIND <“字符串”>|<字符串> SEEK <表达式>(表达式的数据类型可为字符型、数字型、日期型和逻辑型。LOCATE [<范围>] [FOR <条件>] [WHILE<条件>] CONTINUE 说明:FIND命令与SEEK命令的区别是前者后跟字符串,而后者后跟表达式。在用LOCATE命令找到
一个匹配记录后,可用CONTINUE命令搜索表的剩余部分来寻找其他匹配的记录。
例:SET ORDER TO NL „确定索引关键字为NL(年龄 FIND 28 „找年龄字段为“28“的记录 DISPLAY „显示当前记录
SET ORDER TO NL „确定索引关键字为NL(年龄 SEEK “28”„找年龄字段为“28“的记录
DISPLAY 17.从磁盘上删除任意文件:(1ERASE filename|?(2DELETE FILE [filename|?]
18、COUNT 作用:统计当前表文件中符合条件的记录数。
格式:COUNT [<范围>] [FOR <条件>] [WHILE<条件>] [TO <内存变量名>] 说明:内存变量名可用除参数外的任意字符。
19、SUM 作用:对当前表中选中记录的全部或指定的数值字段或由指定字段组成的数值表达式累加求和。
格式:SUM [<范围>] [数值<表达式>] [TO <内存变量名表>] [FOR <条件>] [WHILE<条件>] 20、AVERAGE 作用:对当前表中选中记录的全部或部分数值型字段及其组成的表达式求平均值并显示。
格式:AVERAGE [<范围>] [数值<表达式>] [TO <内存变量名表>] [FOR <条件>] [WHILE<条件>]
21、TOTAL 作用:分类汇总命令,按<表达式>做过索引或排序的表文件的数字型字段进行分类汇总。它把与<表达式>值相同的所有记录中的数字字段的值分别进行求和,并各
自作为一条记录存放在由文件指定的文件中去。在新生成的记录中,还将包括与<表达式>值相同的所有记录中的首项记录的其他字段内容。
格式:TOTAL TO <文件名> ON <表达式>[FIELDS <数值型字段名表>][<范围>][FOR <逻辑表达式1>][WHILE <逻辑表达式2>] 例:USE B2-1 INDEX ON 职称 TO ZC TATOL ON 职称 TO B2-1T FILEDS 工资 22.APPEND FROM 作用:从其他文件向表文件添加数据。数据来源文件既可以是表文件,也可是文本文件或其他符合规定的文件。
格式:APPEND FROM <文件名>|?[FIELDS <字段名表>][FOR <逻辑表达式>] FIELDS <字段名表>和FOR <逻辑表达式>,用于源文件为表文件时,指定追加记录的字段和条件。在字段名表和逻辑表达式中的字段名,必须是在来源和目的两个文件中公有的,共注意宽度和类型匹配。实际应用中,数据来源文件常为表文件(.DBF和ASCII码文本文件(.TXT 对于文本文件又有标准格式(SDF和通用格式(DELIMITED之分.例: USE B2-1 APPE FROM S3-1.TXT SDF BROWSE 23.COPY(选择表的部分内容生成一个新表
作用:把打开的表文件结构及数据复制成由<文件名>所指定的并符合规定要求的文件。如果默认全部选择项和文件名的扩展名,则结构及全部数据都被复制,且其文件扩展名由系统规定为“.DBF”。
格式:COPY TO<文件名> [FIELDS <字段名表>][<范围>][FOR <逻辑表达式1>][WHILE <逻辑表达式2>] 格式中的或用来为新表建立一个与原表相同的结构索引.例1: COPY TO B3-2 COPY TO S3-2.TXT SDF 例2: USE RS COPY TO RS3 FIELDS 姓名,基本工资,奖金 USE RS3 LIST 24.COPY FILE复制数据整表:(可用于复制任何类型文件 COPY FILE 原文件名 TO 目标文件名
注:复制表时,还应当复制和它相配的备注文件(.FPT,如有备注字段和结构复合索引文件。
当前表应关闭。(如果已打开表:COPY TO 新文件名 例:将RS.DBF复制为RS1.DBF COPY FILE RS.DBF TO RS1.DBF 或USE RS
COPY TO RS1 USE RS1 LIST 25.COPY STRUCTURE(只复制结构不复制数据
作用:表文件结构复制,生成一个指定文件名和包括指定字段的表文件结构;如有CDX或PRODUCTION选择项还将为新表建立一个与源表相同的结构索引.格式: COPY STRUCTURE TO<文件名> [FIELDS <字段名表>] 例: COPY STRUCTURE TO B3-3 FIELDS 编号,姓名,何时工作,职称 26.copy to建立结构扩展文件
作用:把已打开的表文件的结构作为数据记录复制到由<文件名>指定的库文件中去.格式: COPY TO<文件名> STRUCTURE EXTENDED 例: USE B3-3 COPY TO B3-4 STRUCTURE EXTENDED USE B3-4 BROW 该命令可以用于测试表文件结构,也可以用于顺序方式建立库文件结构.新库文件的结构是一个由系统规定的标准结构,它由4个字段构成: FIELD_NAME 字段名
FIELD_TYPE 字段类型 FIELD_LEN 字段宽度 FIELD_DEC 小数位数 27.常用命令: 库表
建立数据库: CREATE DATABASE 库文件名.DBC 建立表: CREATE 表文件名.DBF CREATE TABLE/DBF 表名(各个字段属性 打开数据: OPEN DATABASE 库文件名 打开表: USE 表文件名
使用非前库的表:USE 库名!表名 打开索引表:USE 表名 INDEX 索引名 显示库信息:DISP DATABASE [TO PRINTER] 显示记录:LIST(快速查看 BROWSE(分屏浏览可修改 DISP(显示当前记录
关闭数据库:CLOSE ALL(关闭所有库、表、索引 关闭表: USE
CLOSE DATABASES(关闭当前库、表 CLOSE TABLES(关闭当前表,不关库 CLOSE INDEXES(关闭当前索引
修改库:MODI DATA 库名 [NOWAIT] [NOEDIT] 修改表结构:MODI STRU ALTER TABLE 表名 ADD 字段名 ALTER TABLE 表名 ALTER 字段名 ALTER TABLE 表名 DROP 字段名 添加表:ADD TABLE 表名追加记录: INSERT INTO 表名(字段名列表 VALUES(对应数值 APPEND APPEND FROM 源文件 移去表:REMOVE TABLE 表名
删除记录:DELETE ALL FOR [条件](逻辑删除 PACK(物理删除 ZAP(全部彻底删除
删除库:DELETE DATABASE 库名(先关闭库 删除表:DELETE FILE 表名(先关闭表 VFP命令、函数及程序语句大全(2
二、常用函数
1、数学函数 函数用途
ABS(<数值表达式>绝对值,|x| CEILING(<数值表达式> >=自变量的最小整数 EXP(<数值表达式>对基E的幂,e=2.71828 FLOOR(<数值表达式> <=自变量的最大整数 INT(<数值表达式>取整(舍尾自变量
LOG(<数值表达式>自变量的自然对数,ln x LOG10(<数值表达式>自变量的普通对数,lg x MAX(<表达式1>,<表达式2>两个值的最大值 MIN(<表达式1>,<表达式2>两个值的最小值 MOD(<数值表达式1>,<数值表达式2>求余数 RAND([<数值表达式1>]返回伪随机数
ROUND(<数值表达式1>,<数值表达式2>四舍五入第一个自变量 SIGN(<数值表达式>自变量的符号 SQRT(<数值表达式>平方根(正根
2、字符串操作函数 函数用途
&<内存变量> 用于代替内存变量内容
LEN(<字符串表达式>返回字符串表达式的字符个数 SPACE(<数值表达式>生成空格
SUBSTR(<字符串表达式>,<数值表达式n>[,<数值表达式L>]求子字符串,从指定的字符串表达式第n个开始,总长为L的字符串
LOWER(<字符串表达式>将字符串字母转换成小写字母 UPPER(<字符串表达式>将字符串字母转换成大写字母 TRIM(<字符串表达式>删除字符串尾空格
ASC(<字符串表达式>返回字符串表达式最左边的第一个字符的ASCII码 CHR(<数值表达式>将数值表达式转换成字符
AT(<字符串表达式1>,<字符串表达式2>[,<数值表达式n>] 确定字符串表达式1在字符串表达式2中的位置,n为字符串表达式第几次出现 STR(<数值表达式>[,<数值表达式L>][,<数值表达式n>将数值转换为字符串,L为数值表达式总长,n为小数位数
VAL(<字符串表达式>将数字字符串转换为数字 TYPE(<表达式>检测表达式值的数据类型 LTRIM(<字符串表达式>删除字符串左部空格 RTRIM(<字符串表达式>删除字符串右部空格
LEFT(<字符串表达式>,<数值表达式n>取字符串左边部分字符,n为返回的字符个数
RIGHT(<字符串表达式>,<数值表达式n>取字符串右边部分字符,n从右边截取字符个数
3、表(.dbf操作函数
函数用途
BOF([<工作区号或别名>]查表文件开始函数 EOF([<工作区号或别名>]表文件结尾测试函数
RECNO([<工作区号或别名>]测试当前或指定工作区表的当前记录号 DELETED([<工作区号或别名>]记录删除测试函数 FILE(<“字符串”>测试文件是否存在函数 DBF([<工作区号或别名>]检测表的文件名函数
4、日期、时间函数 函数用途
DATE(查系统当前日期函数
TIME([<数值表达式>]查系统当前时间函数
YEAR(<日期型表达式>|<日期时间型表达式>由日期查年函数 MONTH(<日期型表达式>|<日期时间型表达式>从日期查月份函数 CMONTH(<日期型表达式>|<日期时间型表达式>由日期查月份名函数 DAY(<日期型表达式>|<日期时间型表达式>从日期查当月的日函数
DOW(<日期型表达式>|<日期时间型表达式>[,<数值表达式>]由日期查星期函数
CDOW(<日期型表达式>|<日期时间型表达式>从日期查星期名函数 DTOC(<日期型表达式>|<日期时间型表达式>日期转换为字符函数
CTOD(<字符串表达式>字符串转换为日期函数 CTOT(<字符串表达式>返回日期时间值函数 TTOC(<日期时间型表达式>返回字符值
5、显示、打印位置函数 函数用途
ROW(判断光标行位置函数 COL(判断光标列位置函数
INKEY([<数值表达式>]检测用户所击键对应的ASCII码函数,数值表达式以秒为单位等待击键的时间
6、其他函数 函数用途
DISKSPACE(返回默认磁盘驱动器中可用字节数函数 OS(检测操作系统名称的函数 VERSION(返回VFP版本号的函数 VFP命令、函数及程序语句大全(3
三、主要程序语句
1、条件判断语句 格式:(1IF <条件> <命令语句组>
ENDIF 说明:如果条件为真,则执行命令语句组中的各语句,否则跳过这些命令语句不执行, 而执行ENDIF后的语句。(2IF <条件> <命令语句组1> ELSE <命令语句组2> ENDIF 说明:如果条件为真,执行命令语句组1,否则执行命令语句组2。(3IF <条件1> IF <条件2> <命令语句组1> ELSE <命令语句组2> ENDIF...ELSE <命令语句组N>
ENDIF 说明:进行多重条件的嵌套选择。(4DO CASE CASE <条件1> <命令语句组1> CASE <条件2> <命令语句组2> CASE <条件3> <命令语句组3>......CASE <条件N> <命令语句组N> [OTHERWISE] [<命令语句组N+1>] ENDCASE 说明:依次判断条件,转入条件为真的命令语句组中执行。当所有条件都不成立时,若有
OTHERWISE项,则执行命令语句组N+1,否则执行ENDCASE后面的语句。
2、循环语句
程序语句 篇3
●程序设计教学应用问题探究模式的课例剖析
下面笔者以《VB程序设计》中“For循环语句”的教学为例, 通过“发现问题、启发思考”→“分析问题、探索新知”→“解决问题、掌握方法”→“探究问题、提高能力”→“拓展问题、学以致用”→“延伸问题、承前启后”六个环节的教学设计, 详细介绍问题探究模式在程序设计教学中的应用。
1. 发现问题、启发思考
“好的开始是成功的一半”。在For循环语句的教学引入环节, 通过出示一个多项式求和问题:启发学生思考。
(1) 引导学生复习旧知。学生发现如果利用顺序结构编写程序需要编写100条语句:s=s+1, s=s+1/2, s=s+1/3, ……s=s+1/100。
(2) 引导学生“发现问题”:利用顺序结构不便于快速解决这类有规律的重复操作问题。
(3) 引出本节教学的主题:循环结构程序设计——For循环语句。
在这一环节, 从一个实际的数学问题引入新课, 其目的一是激发学生学习本课的学习兴趣和学习动机, 为学生创设良好的学习情境, 让学生由“让我学”变为“我要学”;二是让学生体会程序设计与数学的关系——数学方法和数学思想是程序设计的基础和前提。
2. 分析问题、探索新知
本环节首先出示For循环语句格式:
然后引导学生分析For循环语句执行的流程图。这样设计不仅有利于学生正确理解For循环语句的功能, 还有利于学生体会For循环语句格式中的初值、终值、步长的关系。通过“分析问题”环节的教学使学生理解并掌握本节课的基础知识 (For循环语句的格式和功能) , 为学生掌握方法和形成能力做好铺垫。
3. 解决问题、掌握方法
在这一环节, 通过课前问题的解决以及问题的简单变换, 让学生在解决问题中继续巩固对For循环语句的格式和功能的记忆, 并掌握循环结构程序设计的编程方法和技巧。
4. 探究问题、形成能力
在“探究问题、形成能力”环节, 通过让学生浏览学案课件的方式, 探究多项式求和问题。在学案 (Web型课件) 中对此问题提供了三种算法 (如下页表格所示) , 学生可以通过自主探究和小组交流的形式进行探究性学习。将学生分成三大组, 每组探究一种算法, 并利用该算法上机编程。在上机编程实践中学生不仅可以自主探究, 还可以和组内同学进行交流和讨论。这样, 不仅可以使学生获得循环结构程序设计的基本能力, 还可以培养学生协作交流的学习方法和个性品质。
最后各组选派1~2名学生, 展示自己设计的程序并说明采用算法的核心思想, 其他组学生可以进行提问和点评。通过各组之间的交流与评价, 学生既获得了学习的成就感, 又提高了评价能力。
学生在自主探究中可以进一步理解算法在程序设计中的作用。通过分组展示利用不同算法设计的程序, 引导学生分析各种算法的效率 (时间复杂度和空间复杂度) 。本环节也鼓励学生使用其他算法进行程序设计。让学生能充分发挥自己的主观能动性和个性特长。
“探究问题、形成能力”环节中采用Web型课件, 旨在引导学生通过浏览学案网页, 成为教学的真正主人, 知识意义的主动构建者。Web型课件成为学生自主学习、协作探究的认知工具。
5. 拓展问题、学以致用
在这一环节中, 对上一环节探究的纯数学问题进行拓展, 即将程序中语句“Label1.Caption=s”修改为“Label1.Caption=4*s”。运行到某一程序时, 结果为3.141594 (这一值比较接近圆周率) 。接下来, 教师引导学生将终值分别设置为1000、10000、100000, 让学生分析结果的变化。学生不难发现, 随着循环次数的不断增加, 结果值越来越接近圆周率。然后告诉学生, 我们刚才的问题求解正是利用了高等数学中的公式:
让学生通过“古代伟大的数学家祖冲之对圆周率的研究进行了几十年”与“现代人类利用计算机在刹那间便可计算出圆周率”这两个事实进行对比, 从而引导学生发现:程序设计确实可以解决现实生活中难以解决甚至是无法解决的问题, 让学生真正体会程序设计妙处的同时, 使学生树立学习程序设计的自信心。
6. 延伸问题、承前启后
“延伸问题”是教学的最后一个环节。这一环节利用For循环语句实现循环结构设计的有关问题, 总结For循环语句求解循环问题的类型是循环次数固定的计数型循环。然后, 向学生提出新的问题进行教学延伸:“用一张薄纸 (厚度为0.5毫米) , 折叠多少次就可以超过珠穆朗玛峰的高度 (8844.43米) ”, 引导学生发现在现实生活中还有一类循环次数不确定的循环, 即引出下一节要学习的“While循环语句”。
可见, 问题的延伸, 在教学中能够起到承上启下、构建知识结构体系的作用。
●程序设计教学应用问题探究模式的优势
通过上述课例《VB程序设计》中“For循环语句”的教学设计, 我们不难发现, 在程序设计教学中, 利用问题探究教学模式的优势颇多。通过问题探究, 教师可以逐步引导学生理解、掌握并巩固基础知识, 提高学生运用所学知识解决实际问题的基本技能。同时, 采用问题探究还有助于学生掌握编程的方法和技巧。学生在探究中学习、在探究中发现、在探究中掌握, 从而培养学生的创新、协作精神和实践能力, 提高学生解决问题的综合能力, 最终达到学以致用的教学目的。
程序语句 篇4
漠河县职业技术学校 尘威威 《C语言循环程序设计—for语句》教学案例
漠河县职业技术学校 尘威威
C语言基础是中职计算机专业的一门必修课,也是要求计算机专业学生学习、掌握的一门重点课程,这门课程核心内容就是要让学生掌握一门编程的语言,学会编写简单的程序,能读懂C语言源程序。
案例背景:
在计算机应用专业教学中,C语言是一门理论与实践结合得比较紧的课程。要掌握和使用好这门语言,既要求学生有比较扎实的理论基础,又要具备较强的应用实践能力。如果只是按照传统的知识体系照本宣科,让学生理解这些枯燥的概念都难,更不要说达到良好的教学效果,而且易挫伤学生学习编程的积极性。因此,在教学中可以改为从案例入手,通过给学生演示、让学生模仿,在实际应用中去探究和领悟这些概念,并适时地加以归纳总结和进行概念的延伸,让学生在轻松愉快的气氛中学习新知识。所以从课程内容而言,案例教学是适用的,是切合学生的。
循环结构是程序设计三种基本结构的重中之重,而循环中的for循环是程序中运用最多的,也是较灵活的语句之一,它既是前面知识的延续,又是后面知识的基础,在知识构架中起着重要的衔接作用,如果不采用一些恰当有效的方法,学生在学习过程中会难以掌握。在教学过程中教师应结合一些有趣的程序,提高学生的学习兴趣,引导学生全身心地投入课堂。本文针对学生的实际情况,具体阐述for循环语句在具体编程时的灵活应用。
教学目标确定
(一)知识与技能
1、领会程序设计中构成循环的方法
2、能使用for循环语句编写C语言语句,并能运用for循环语句编写出正确的程序。
(二)过程与方法
C语言程序设计中for循环语句教学以行动导向教学为主线,通过“提出问题―分析问题―解决问题―问题扩展―讨论―总结归纳―实践”的程序,过渡到知识应用和练习。
本课采用多媒体课件进行教学,通过课件把文字和图片有机的结合,使学生在学习过程中更加容易理解,学习效率高。在课堂讨论和实践过程中,教师适当引导,学生主动探究、归纳总结学习内容,既有利于领会掌握新知识点,又能充分发挥学生的主体作用。在重点的突破上,采用范例比较教学法,给出具体的案例,让学生通过典型的例子掌握知识,同时通过用while、do while语句的所编写的程序进行比较,加深学生印象,让学生快速的掌握for循环语句的基本结构及使用方法。
(三)情感与价值观
1.让学生在自主解决问题的过程中培养成就感,为今后自主学习打下良好的基础。
2、培养学生学习的主动性,激发学生学习热情,以及培养团队合作的精神、自主探究,合作交流的学习方法,观察,乐于分析的学习态度。
教学重难点确定
C语言程序设计中for循环语句的重点是“for语句的结构”,分析题目意图(即算法分析),并用让学生便于理解的方式描述,学生掌握语句的结构和用法并不困难,难的是在实际的应用中那些时候该使用哪种循环来解决问题比较简洁、高效,所以我把本节课的难点确定为“for语句的应用”。
学情分析:本节课我主要针对计算机专业高三高考班的学生,在学这节课之前他们应准确掌握《C语言程序设计》中关于实现循环结构语句,如 for 或 while,do-while。并拥有能分析并描述简单算法如求累加,累乘的能力。
案例描述
案例1:教师将一张空白A4纸向学生展示,跟同学们说,今天老师给大家做个试验,让你们来猜一猜(学生的兴趣和精神一下就提起来了),然后老师边演示边讲解,将这张纸对折一下后几张?学生都能回答: 2张。继续发问,对折两下几张?学生:4张。对折三下呢?学生:8张。(这个时候学生充满疑惑,老师想干嘛呢,问这么简单的问题)接着老师提出问题:如果纸理想化的大,对折42下,这些纸的厚度将会多高?
这个教室一下就热闹起来了,学生们纷纷给出自己想像的答案,有些同学比划出手势:伸开双手说:有那么高,有人说桌子那么高的,有说房子那么高的。又有人马上否定,哪有那么高。有些同学拿起笔就开始算,算着算着就不知道该从哪儿下手了。
这个时候老师组织安静课堂,叫同学分组给出自己心里倾向的答案,可以估计,可不说理由。
四个小组分别给出的答案是:1:书桌那么高(大概50cm)。2:人的高度(大概170cm)。3:楼房的高度(大概3000cm)。4:大概10厘米。
老师不说哪一组对,只是问同学们,这个高度该怎么算? 接下来和同学一起分析得出以下结论:
1、纸张的厚度h?
2、有多少张纸n?
3、高度=h*n.解决问题1:同学自行测量(4组同学各自准备100页纸,测出总高度/100,取4个小组的平均值)。最后得出一张纸的厚度约=0.1mm。
这个环节的主要目的是让每个学生动手,锻炼他们的动手实践,合作交流的集体合作精神。
解决问题2:有多少张纸?2的42次方。接下来利用循环语句来做(即有42个2相乘)。
编写源程序
所用方法:学生自己编写,小组同学相互交流。
目的:培养并锻炼学生将心中已明确的算法落实到具体的程序语句上。
教师活动 这个时候巡查教室,检查并了解学生完成情况,对部分有小问题的同学给予及时帮助。
组上有成绩比较好的同学很快就把程序编写完毕,我看了一下,选了一个同学到教室机给大家调试展示。该同学给出的程序如下:
main(){ int i,k=1;float s;for(i=1;i<=42;i++)k=k*2;/* k是纸张的张数 */ s=k*0.1*1.0e-6;/* 将mm转换成km */ printf(“将一张纸折42下的高度为:%.2f公里”,s);} 调试结果:将一张纸折42下的高度为:0.00公里.这个时候老师提问:为什么会出现0.00的情况?请同学们为他指出问题。同学们思考了一会无人作答。这个时候老师提醒:k的值将会很大.结果部分同学作恍然大悟状态,有同学马上举手:老师,变量k的值不能定义为int,应定义为long;问他为什么?他说:int类型的取值范围是:32767,装不下k。老师微笑表扬:方向对了。改好,调试,结果还是0.00公里。这个时候又有同学发言了:老师,不会定义为long都装不下k吧。这个时候老师提问:如果整型数据long都装不下的数据该定义为什么?学生回答:实型float。
改好,调试,Ok,成功!源程序如下 main(){ int i;float s,k=1;for(i=1;i<=42;i++)k=k*2;/* k是纸张的张数 */ s=k*0.1*1.0e-6;/* 将mm转换成km */ printf(“将一张纸折42下的高度为:%.2f公里”,s);} 调试结果:调试结果:将一张纸折42下的高度为:439804.66公里.全班同学的脸上都露出成功的喜悦。可同学们看到结果,表示不太相信,问老师,是不是算错了,有这么高呀。老师作肯定的答复:没错,就有这么高。比地球到月亮的距离(384,401公里)都还要高。这里可以告诫学生,科学不是凭想像,实践出真知。
问题延伸:已知太阳离地球有1.5亿公里,如果理想化的去折纸,最多折多少下有这么高?
学生分组讨论,用什么语句最恰当。得出结论。(用 do while语句)给同学们五分钟,请同学们给出程序并且调试出结果。教师点评学生的程序,指出程序中容易出现错误的地方。源程序如下:
main(){ int i,k=1;float s;do { k=k*2;S=k*0.1*1.0e-6;i++;} while(s<=1.5e8);printf(“最多可折%d下有地球到太阳那么高”,i);} 案例反思:
通过这案例教学也给我留下了很多启示:
1、根据C语言的学科特点,和学生的现状,特别是根据学生平时厌理论而乐操作、解决实际问题能力较差的特点,采用案例教学可以充分调动学生学习C语言的兴趣和积极性,使学生处于精神集中的状态,确保学生将知识真正学到手。通过新鲜的案例引领课堂,平时上课精神不集中的学生都认真分析问题了,个别平时打瞌睡的学生精神也集中了。
【程序语句】推荐阅读:
§8-3程序的多条件多分支结构——DOCASE语句说课材料06-15
经典语句个性签名 - 经典语句个性签名06-07
伤感网络语句10-20
关于书籍语句06-03
淘宝评价语句06-19
励志名言语句06-19
绝情的语句06-26
励志语句收录06-30
温馨提示语句07-09
经典语句的07-23