无须了解计算机内部,Qbasic信息技术教案.doc

第二章 程序新天地----初识QBASIC

一、学习目标

1.了解机器语言和高级语言各自的特点。

2.了解什么是计算机程序。

3.了解程序设计的基本步骤。

二、教学重点

程序设计的基本步骤。

三、教学难点

程序设计的应用。

四、教学方法找教案

1.演示法。

2.实践法。

五、教学手段与教学媒体

多媒体网络教室。

六、课时安排

1课时。

七、教学过程

教学内容、步骤与方法

1.机器语言和高级语言各自的主要特点

机器语言:与计算机内部结构有关,不通用,其程序不需“翻译”可直接执行。

高级语言:与计算机内部结构无关,通用,其程序需要“翻译”后才可执行。

2.计算机程序

用计算机语言描述的解决问题的程序。

3.程序设计的基本步骤

(1)问题分析:对问题详细分析,弄清输入(已知)条件和要求输出的结果,明确解决问题的关键和途径。

(2)算法设计:根据分析结果,确定解决问题的方法和步骤,并描述出来。

(3)程序实现:根据描述的算法编写程序并上机通过。

三、应用实例

1.判断下列说法的正误

(1)机器语言是硬件而高级语言是软件。

(2)各种计算机语言编写的程序计算机都可直接执行。

解:

(1)说法错误。

分析:计算机语言都属软件,故机器语言和高级语言都是软件。

(2)说法错误。

分析:只有机器语言编写的程序计算机可直接执行,而各种高级语言和汇编语言编写的程序都要先“翻译”成机器语言程序后执行。

2.房租收费标准为,住房面积在40m2及其以下的0.8元/m2;超过40m2的部分为2元/m2。写出收房租的算法

解:设住房面积为x,房租为y,那么

据上分析,收房租的算法为:

(1)输入x

(2)判断是否x<=40?

是则)y←0.8x,否则y←0.8 ×40+2(x一40)

(3)输出x,y

(4)结束

四、练习实践

1.单项选择题

(1)无须了解计算机内部结构就可以使用的计算机语言是( )。

A.机器语言 B.汇编语言 C.高级语言

(2)( )是计算机硬件。

A.机器语言程序 B.CPU C.操作系统

(3)BASIC语言是属于( )。

A.机器语言 B.高级语言 c.汇编语言

2.写出解决下列问题的算法

(1)输入底半径R、高H,求圆锥体的底面积S和体积V。

(2)解一元二次方程ax2+bx+c=0(设d=b2—4ac,二实根为x1、x2;要求如果d<0,那么输出“N”,表示无实根,否则求出二实根并输出)。

教学后记:

第三章 顺藤摸瓜----顺序结构程序设计

第一节 有备而来---程序设计准备

一、学习目标

1.掌握进入BASIC环境的方法和输入、编辑、运行程序的方法。

2.初步掌握BASIC中的基本概念:常量、变量、函数、表达式。

3.初步掌握输出、赋值、输入语句的格式和功能。

4.初步掌握简单顺序结构程序的设计方法。

5.理解程序的顺序结构的概念。

二、教学重点

掌握输出、赋值、输入语句的格式和功能。

三、教学难点

掌握简单顺序结构程序的设计方法。

四、教学方法

1.演示法。

2.实践法。

五、教学手段与教学媒体找教案

多媒体网络教室。

六、课时安排

1课时。

七、教学过程

二、学习指导

1.BASIC中的科学记数法类似数学中的科学记数法

例如:-3.14156E+3 —— -3.14156×103

2.56E-2 一 2.56×10-2

其中E表示幂底数10,E后跟的整数为幂指数。

2.常见标准函数

ABS(x) 求x的绝对值,即|x|

SQR(x) 求x的算术平方根,即。

SIN(x) 求x的正弦值C角x的单位必须是弧度,l°≈3.14159/180)。

COS(x) 求x的余弦值(规定同上)。

INT(x) 求不大于x的最大整数。

注意:x为负数时,其值不是去掉小数,例INT(一5.99)≠一5。

INT(X)用处很多:

(1)对正数x四舍五入保留N位小数的表达式:

INT(X*10^N+0.5)/1O^N

例如:对正数x四舍五入保留两位小数的表达式:

INT(X*100+0.5)/100

(2)判断整数A能被整数B整除的条件关系式:

INT(A/B)=A/B

(3)求整数A除以B的余数的表达式:

A—INT(A/B)*B.

RND(x) 产生一个O到1之间的随机小数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是用 qbasic 编写俄罗斯方块 640*240 黑白并生成 .bas 文件的示例代码: ``` REM 俄罗斯方块游戏 REM 作者:AI智能编程 SCREEN 12, 0, 1 ' 640*240, 黑白模式 RANDOMIZE TIMER ' 初始化随机数生成器 ' 定义常量 CONST ROWS = 20 ' 行数 CONST COLS = 10 ' 列数 CONST BLOCK_SIZE = 12 ' 方块大小 CONST BLOCK_NUM = 7 ' 方块种类数 ' 定义方块的形状 DIM SHARED BLOCKS(7, 4, 4) BLOCKS(1) = _ ' O 形 "1111" + _ "1001" + _ "1001" + _ "1111" BLOCKS(2) = _ ' I 形 "1000" + _ "1000" + _ "1000" + _ "1000" BLOCKS(3) = _ ' T 形 "1110" + _ "0100" + _ "0100" + _ "0000" BLOCKS(4) = _ ' L 形 "1000" + _ "1000" + _ "1100" + _ "0000" BLOCKS(5) = _ ' J 形 "0010" + _ "0010" + _ "0110" + _ "0000" BLOCKS(6) = _ ' S 形 "0010" + _ "0110" + _ "0100" + _ "0000" BLOCKS(7) = _ ' Z 形 "0100" + _ "0110" + _ "0010" + _ "0000" ' 定义变量 DIM SHARED ROWS(ROWS, COLS) AS INTEGER ' 存储方块图形 DIM SHARED BLOCK_X AS INTEGER ' 方块坐标 X DIM SHARED BLOCK_Y AS INTEGER ' 方块坐标 Y DIM SHARED BLOCK_TYPE AS INTEGER ' 方块类型 DIM SHARED BLOCK_ROTATE AS INTEGER ' 方块旋转次数 DIM SHARED SCORE AS INTEGER ' 分数 ' 初始化游戏 SUB INIT_GAME () DIM SHARED I AS INTEGER DIM SHARED J AS INTEGER FOR I = 0 TO ROWS - 1 FOR J = 0 TO COLS - 1 ROWS(I, J) = 0 ' 初始化为 0 NEXT J NEXT I BLOCK_X = INT((COLS - 4) / 2) * BLOCK_SIZE ' 初始坐标 BLOCK_Y = 0 BLOCK_TYPE = INT(RND * BLOCK_NUM) + 1 ' 随机方块类型 BLOCK_ROTATE = INT(RND * 4) ' 随机方块旋转次数 SCORE = 0 END SUB ' 绘制方块 SUB DRAW_BLOCK (X AS INTEGER, Y AS INTEGER, TYPE AS INTEGER, ROTATE AS INTEGER) DIM SHARED I AS INTEGER DIM SHARED J AS INTEGER DIM SHARED K AS INTEGER DIM SHARED L AS INTEGER DIM SHARED BLOCK_SHAPE AS STRING BLOCK_SHAPE = BLOCKS(TYPE, ROTATE + 1) FOR I = 0 TO 3 FOR J = 0 TO 3 K = X + J * BLOCK_SIZE L = Y + I * BLOCK_SIZE IF MID(BLOCK_SHAPE, I * 4 + J + 1, 1) = "1" THEN LINE (K, L)-(K + BLOCK_SIZE, L + BLOCK_SIZE), 1, BF ' 画方块 END IF NEXT J NEXT I END SUB ' 检查方块是否可以移动或旋转 FUNCTION CHECK_BLOCK (X AS INTEGER, Y AS INTEGER, TYPE AS INTEGER, ROTATE AS INTEGER) AS INTEGER DIM SHARED I AS INTEGER DIM SHARED J AS INTEGER DIM SHARED K AS INTEGER DIM SHARED L AS INTEGER DIM SHARED BLOCK_SHAPE AS STRING BLOCK_SHAPE = BLOCKS(TYPE, ROTATE + 1) FOR I = 0 TO 3 FOR J = 0 TO 3 K = X + J L = Y + I IF MID(BLOCK_SHAPE, I * 4 + J + 1, 1) = "1" THEN IF K < 0 OR K >= COLS OR L >= ROWS OR (L >= 0 AND ROWS(L, K) <> 0) THEN RETURN 0 ' 不可移动或旋转 END IF END IF NEXT J NEXT I RETURN 1 ' 可以移动或旋转 END FUNCTION ' 移动方块 SUB MOVE_BLOCK (X AS INTEGER, Y AS INTEGER, TYPE AS INTEGER, ROTATE AS INTEGER) DIM SHARED I AS INTEGER DIM SHARED J AS INTEGER DIM SHARED K AS INTEGER DIM SHARED L AS INTEGER DIM SHARED BLOCK_SHAPE AS STRING BLOCK_SHAPE = BLOCKS(TYPE, ROTATE + 1) FOR I = 0 TO 3 FOR J = 0 TO 3 K = X + J L = Y + I IF MID(BLOCK_SHAPE, I * 4 + J + 1, 1) = "1" THEN ROWS(L, K) = TYPE ' 更新方块图形 END IF NEXT J NEXT I END SUB ' 消除满行 SUB REMOVE_LINES () DIM SHARED I AS INTEGER DIM SHARED J AS INTEGER DIM SHARED FULL_ROWS AS INTEGER FOR I = ROWS - 1 TO 0 STEP -1 FULL_ROWS = 1 FOR J = 0 TO COLS - 1 IF ROWS(I, J) = 0 THEN FULL_ROWS = 0 EXIT FOR END IF NEXT J IF FULL_ROWS = 1 THEN FOR J = 0 TO COLS - 1 ROWS(I, J) = 0 ' 清空满行 NEXT J FOR J = I - 1 TO 0 STEP -1 FOR K = 0 TO COLS - 1 ROWS(J + 1, K) = ROWS(J, K) ' 上面的方块下落 NEXT K NEXT J SCORE = SCORE + 10 ' 增加分数 END IF NEXT I END SUB ' 绘制游戏界面 SUB DRAW_GAME () DIM SHARED I AS INTEGER DIM SHARED J AS INTEGER CLS FOR I = 0 TO ROWS - 1 FOR J = 0 TO COLS - 1 IF ROWS(I, J) <> 0 THEN LINE (J * BLOCK_SIZE, I * BLOCK_SIZE)-(J * BLOCK_SIZE + BLOCK_SIZE, I * BLOCK_SIZE + BLOCK_SIZE), 1, BF ' 画方块 END IF NEXT J NEXT I DRAW_BLOCK BLOCK_X, BLOCK_Y, BLOCK_TYPE, BLOCK_ROTATE ' 绘制当前方块 PRINT "SCORE: "; SCORE ' 显示分数 END SUB ' 主程序 SUB MAIN () DIM SHARED MOVE_TIME AS SINGLE DIM SHARED KEY_STATE AS STRING * 256 DIM SHARED GAME_OVER AS INTEGER DIM SHARED I AS INTEGER DIM SHARED J AS INTEGER DIM SHARED K AS INTEGER INIT_GAME ' 初始化游戏 DO WHILE NOT GAME_OVER DRAW_GAME ' 绘制游戏界面 IF MOVE_TIME < TIMER THEN ' 方块下落 MOVE_TIME = TIMER + 0.3 ' 下落时间间隔 IF CHECK_BLOCK(BLOCK_X, BLOCK_Y + BLOCK_SIZE, BLOCK_TYPE, BLOCK_ROTATE) THEN BLOCK_Y = BLOCK_Y + BLOCK_SIZE ' 方块下落 ELSE MOVE_BLOCK BLOCK_X, BLOCK_Y, BLOCK_TYPE, BLOCK_ROTATE ' 更新方块图形 REMOVE_LINES ' 消除满行 BLOCK_X = INT((COLS - 4) / 2) * BLOCK_SIZE ' 新的方块 BLOCK_Y = 0 BLOCK_TYPE = INT(RND * BLOCK_NUM) + 1 BLOCK_ROTATE = INT(RND * 4) IF NOT CHECK_BLOCK(BLOCK_X, BLOCK_Y, BLOCK_TYPE, BLOCK_ROTATE) THEN ' 游戏结束 GAME_OVER = 1 END IF END IF END IF FOR I = 1 TO 255 ' 检测按键 KEY_STATE(I) = CHR$(INP(&H60 + I)) NEXT I IF KEY_STATE(28) <> CHR$(0) AND CHECK_BLOCK(BLOCK_X, BLOCK_Y + BLOCK_SIZE, BLOCK_TYPE, BLOCK_ROTATE) THEN ' 按下 Enter 键方块加速下落 BLOCK_Y = BLOCK_Y + BLOCK_SIZE END IF IF KEY_STATE(75) <> CHR$(0) AND CHECK_BLOCK(BLOCK_X - BLOCK_SIZE, BLOCK_Y, BLOCK_TYPE, BLOCK_ROTATE) THEN ' 按下左箭头移动方块 BLOCK_X = BLOCK_X - BLOCK_SIZE END IF IF KEY_STATE(77) <> CHR$(0) AND CHECK_BLOCK(BLOCK_X + BLOCK_SIZE, BLOCK_Y, BLOCK_TYPE, BLOCK_ROTATE) THEN ' 按下右箭头移动方块 BLOCK_X = BLOCK_X + BLOCK_SIZE END IF IF KEY_STATE(72) <> CHR$(0) AND CHECK_BLOCK(BLOCK_X, BLOCK_Y, BLOCK_TYPE, (BLOCK_ROTATE + 1) MOD 4) THEN ' 按下上箭头旋转方块 BLOCK_ROTATE = (BLOCK_ROTATE + 1) MOD 4 END IF LOOP DRAW_GAME ' 绘制最终游戏界面 PRINT "GAME OVER" PRINT "SCORE: "; SCORE DO WHILE INKEY$ <> "" ' 等待按键 LOOP END SUB MAIN ' 运行游戏 ``` 将以上代码保存为 tetris.bas 文件,即可在 qbasic 中运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值