2024年少儿编程教案试听课4篇
【请您参阅】下面供您参考的“2024年少儿编程教案试听课4篇”是由阿拉网友精心整理分享的,供您阅读参考之用,希望此例范文对您有所帮助,喜欢就复制下载支持一下小编了!
少儿编程教案试听课篇1
常用编程指令的应用
车削加工编程一般包含x和z坐标运动及绕z轴旋转的转角坐标c。
(1)快速定位(g00或g0)刀具以点位控制方式从当前所在位置快速移动到指令给出的目标位置。
指令格式:g00 x(u)z(w);(2)直线插补(g01或g1)
指令格式:g01 x(u)z(w)f ;
图1 快速定位 图2 直线插补
g00 ; g01 ;
/绝对坐标,直径编程; /绝对坐标,直径编程,切削进给率/r g00 w-30 g01 ;
/增量坐标,直径编程 /增量坐标,直径编程,切削进给率/r(3)圆弧插补(g02或g2,g03或g3)1)指令格式: g02 x(u)_z(w)_i_k_f_ ; g02 x(u)z(w)r f ;
g03 x(u)_z(w)_i_k_f_ ; g03 x(u)z(w)r f ;
2)指令功能: 3)指令说明: ①g02为顺时针圆弧插补指令,g03为逆时针圆弧插补指令。圆弧的顺、逆方向判断见图3左图,朝着与圆弧所在平面相垂直的坐标轴的负方向看,顺时针为g02,逆时针为g03,图3右图分别表示了车床前置刀架和后置刀架对圆弧顺与逆方向的判断;
图3 圆弧的顺逆方向
②如图4,采用绝对坐标编程,x、z为圆弧终点坐标值;采用增量坐标编程,u、w为圆弧终点相对圆弧起点的坐标增量,r是圆弧半径,当圆弧所对圆心角为0°~180°时,r取正值;当圆心角为180°~360°时,r取负值。i、k为 圆心在x、z轴方向上相对圆弧起点的坐标增量(用半径值表示),i、k为零时可以省略。
图4 圆弧绝对坐标,相对坐标
图5 圆弧插补
g02 ; g03 ;
g02 ; /绝对坐标,直径编程
g02 ; g03 ; g02 ; /相对坐标,直径编程
(4)主轴转速设置(s)车床主轴的转速(r/min)为:
式中υ为圆周切削速度,单位缺省为m/min、d为工件的外径,单位为mm。
例如,工件的外径为200mm,要求的切削速度为300m/min,经计算可得
因此主轴转速应为478r/min,表示为s478。(5)主轴速度控制指令
数控车削加工时,按需要可以设置恒切削速度(例如,为保证车削后工件的表面粗糙度一致,应设置恒切削速度),车削过程中数控系统根据车削时工件不同位置处的直径计算主轴的转速。
恒切削速度设置方法如下:g96 s ; 其中s后面数字的单位为r/min。
设置恒切削速度后,如果不需要时可以取消,其方式如下:g97 s ; 其中s后面数字的单位为r/min。
在设置恒切削速度后,由于主轴的转速在工件不同截面上是变化的,为防止主轴转速过高而发生危险,在设置恒切削速度前,可以将主轴最高转速设置在某一个最高值。切削过程中当执行恒切削速度时,主轴最高转速将被限制在这个最高值。设置方法如下:g50 s ; 其中s的单位为r/min。
图6 主轴速度控制
例如:在刀具t01切削外形时用g96设置恒切削速度为200m/min,而在钻头t02钻中心孔时用g97取消恒切削速度,并设置主轴转速为1100r/min。这两部分的程序头如下:
g50 s2500 t0101 m08; /g50限定最高主轴转速为2500r/min;
g96 s200 m03; / g96设置恒切削速度为200m/min,主轴顺时针转动 g00 ; / 快速走到点(,)g01 ; /车削外形 g00 ; /快速退回 t0202; /调02号刀具
g97 sll00 m03; /g97取消恒切削速度,设置主轴转速为ll00r/min g00 m08; /快速走到点(0,),冷却液打开 g01 ; /钻中心孔(6)进给率和进给速度设置指令
在数控车削中有两种切削进给模式设置方法,即进给率(每转进给模式)和进给速度(每分钟进给模式)。
1)进给率,单位为mm/r,其指令为: g99; / 进给率转换指令,g01 x z f ; / f的单位为mm/r 2)进给速度,单位为mm/min,其指令为: g98; / 进给速度转换指令
g01 x z f ; / f的单位为mm/min
图7 进给率和进给速度
a:g99 g01 ;b:g98 g01 f80;表示进给率为/r 表示进给速度为80mm/minc系统缺省进给模式是进给率,即每转进给模式。(7)工件原点设置
工件坐标系的原点有两种设置方法。
1)用g50指令进行工件原点设置,分以下两种设置情况:
图8 工件原点设置 ①坐标原点设置在卡盘端面
如图8a所示,这种情况下z坐标是正值。工件原点设置在卡盘端面:
g50 ;/* 将刀尖当前位置的坐标值定为工件坐标系中的一点(85.,210.)。②坐标原点设置在零件右端面
如图8b所示,这种情况下z坐标值是负值。工件原点设置在工件右端面:g50 ; 则刀尖当前位置即为工件坐标系原点。(8)端面及外圆车削加工
端面及外圆的车削加工要用到插补指令g01。
为正确地编写数控程序,应在编写程序前根据工件的情况选择工件原点。确定好工件原点后,还必须确定刀具的起始点。
编程时还应考虑车削外圆的始点和端面车削的始点,这两点的确定应结合考虑工件的毛坯情况。如果毛坯余量较大,应进行多次粗车,最后进行一次精车,因而每次的车削始点都不相同。
图9 确定车削原点
a)工件原点在左端面时 b)工件原点在右端面时 1)工件原点在左端面 o0001 /* 程序编号o0001 n0 g50 ; /* 设置工件原点在左端面 n1 g30 u0 w0; /* 返回第二参考点
n2 g50 s1500 t0101 m08; /* 限制最高主轴转速为1500r/min,调01号刀具,m08为打开冷却液
n3 g96 s200 m03; /* 指定恒切削速度为200m/min n4 g00 ; /* 快速走到外圆粗车始点 n5 g01 ; /* 以进给率/r车削外圆 n6 ; /* 台阶车削
n7 ; /*φ处长度为的一段外圆 n8 g00 ; /* 刀具快速退到点(,)n9 ; /*刀具快速走到点(,)n10 g01 ; /* 车削右端面
n1l g00 ; /* 刀具快速退到点(-,)n12 g30 u0 w0; /* 直接回第二参考点以进行换刀 n13(finishing); /*精车开始,括号为程序说明
n14 g50 s1500 t0202; /*限制最高主轴转速为1500r/min,调02号刀具 n15 g96 s250; /* 指定恒切削速度为250m/min n16 g00 ;/*快速走到外圆精车始点(,153)n17 g42 g01 ;/*调刀尖半径补偿,右偏 n18 ; /*φ一段外圆的精车 n19 ; /*台阶精车
n20 ; /*φ处长度为外圆的精车 n21 g40 g00 ; /*取消刀补 n22 ; /*刀具快速走到点(,)n23 g41 g01 ; /*调刀尖半径补偿,左偏 n24 g01 ; /*精车右端面
n25 g40 g00 m09; /*取消刀补,切削液关
n26 g30 u0 w0 m05; /*返回第二参考点,主轴停止 n27 m30; /*程序结束 2)工件原点在右端面:工件原点设置在右端面与设置在左端面的区别仅在于z坐标为负值,程序编写过程完全相同。o0002 ; /* 程序编号
n0 g50 /* 设置工件原点在右端面 n2 g30 u0 w0; /* 返回第二参考点
n4 g50 s1500 t0101 m08; /* 限制最高主轴转速 n6 g96 s200 m03; /* 指定恒切削速度为 200m/min,主轴逆时针旋转
n8 g00 ; /*快速走到点(,)n10 g01 ; /*以进给率/r粗车φ处外圆 n12 ; /*粗车锥面
n14 ; /*粗车φ处长度为10的一段外圆 n16 g00 ;/*刀具快速走到点(,)n18 ; /*刀具快速走到点(3l,)n20 g01 ; /*粗车端面
n22 g00 ; /*刀具快速走到点(-,2)n24 g30 u0 w0; /*返回第二参考点 n26(finishing); /*精车开始
n28 g50 s1500 t0202;/*设置主轴最高转速1500r/min,调2号刀具 n30 g96 s250; /* 指定恒切削速度为250m/min n32 g00 ;/*刀具快速走到精车始点(,)n34 g42 g01 ;/*调刀尖半径补偿,右偏 n36 ; /*精车ф处外圆 n38 ; /*精车锥面
n40 ; /*精车ф处外圆
n42 g40 g00 ; /*取消刀补,刀具快速走到点(62,)n44 ; /*刀具快速走到点(31,)n46 g41 g01 ; /*调刀尖半径补偿,左偏
n48 g01 ; /*精车端面
n50 g40 g00 m09; /*取消刀补,刀具快速走到点(,)n52 g30 u0 w0 m30; /*返回参考点,程序结束 实例:
如图10所示零件
图10 数控车削综合编程实例
n0050 g01 x32 z0;n0110 g02 x16 z-15 r2;n0060 g01 ;n0120 g01 x20;
n0070 g00 z1;n0130 g01 z35;n0080 g00 x10;n0140 x26;n0090 g01 x12 z1;n0150 z50;n0100 g01 x12 z1;n0160 x32;为1500r/min,调1号刀具,m08为打开冷却液在这种情况下,如果设置指令写成: g50 x0 z0;
g0
2、g03指令表示刀具以f进给速度从圆弧起点向圆弧终点进行圆弧插补。刀具以一定的进给速度从当前所在位置沿直线移动到指令给出的目标位置。
2.循环加工指令
当车削加工余量较大,需要多次进刀切削加工时,可采用循环指令编写加工程序,这样可减少程序段的数量,缩短编程时间和提高数控机床工作效率。根据刀具切削加工的循环路线不同,循环指令可分为单一固定循环指令和多重复合循环指令。(1)单一固定循环指令
对于加工几何形状简单、刀具走刀路线单一的工件,可采用固定循环指令编程,即只需用一条指令、一个程序段完成刀具的多步动作。固定循环指令中刀具的运动分四步:进刀、切削、退刀与返回。
1)外圆切削循环指令(g90)
指令格式 : g90 x(u)_ z(w)_ r_ f_ 指令功能: 实现外圆切削循环和锥面切削循环。
刀具从循环起点按图11与图12所示走刀路线,最后返回到循环起点,图中虚线表示按r快速移动,实线表示按f指定的工件进给速度移动。
图11 外圆切削循环
图12 锥面切削循环
指令说明: ① x、z 表示切削终点坐标值;
② u、w 表示切削终点相对循环起点的坐标分量;
③ r 表示切削始点与切削终点在x轴方向的坐标增量(半径值),外圆切削循环时r为零,可省略;
④f表示进给速度。例题 如图13所示,运用外圆切削循环指令编程。
g90 x40 z20 f30
a-b-c-d-a x30
a-e-f-d-a x20
a-g-h-d-a
图13 外圆切削循环例题
例题 如图14所示,运用锥面切削循环指令编程。
g90 x40 z20 r-5 f30 a-b-c-d-a x30
a-e-f-d-a x20
a-g-h-d-a
图14 锥面切削循环例题
2)端面切削循环指令(g94)
指令格式: g94 x(u)_ z(w)_ r_ f_ 指令功能: 实现端面切削循环和带锥度的端面切削循环。
刀具从循环起点,按图15与图16所示走刀路线,最后返回到循环起点,图中虚线表示按r快速移动,实线按f指定的进给速度移动。
图15 端面切削循环 图16 带锥度的端面切削循环
① x、z表示端平面切削终点坐标值;
② u、w表示端面切削终点相对循环起点的坐标分量;
③ r 表示端面切削始点至切削终点位移在z轴方向的坐标增量,端面切削循环时r为零,可省略;
④ f表示进给速度。
例题: 如图17所示,运用端面切削循环指令编程。
g94 x20 z16 f30
a-b-c-d-a z13
a-e-f-d-a z10
a-g-h-d-a
图17 端面切削循环例题 图18 带锥度的端面切削循环例题
例题: 如图18所示,运用带锥度端面切削循环指令编程。
g94 x20 z34 r-4 f30
a-b-c-d-a z32
a-e-f-d-a z29
a-g-h-d-a(2)多重复合循环指令(g70——g76)运用这组g代码,可以加工形状较复杂的零件,编程时只须指定精加工路线、径向轴向精车留量和粗加工背吃刀量,系统会自动计算出粗加工路线和加工次数,因此编程效率更高。
在这组指令中,g71、g7
2、g73是粗车加工指令,g70是g7
1、g7
2、g73粗加工后的精加工指令,g74 是深孔钻削固定循环指令,g75 是切槽固定循环指令,g76是螺纹加工固定循环指令。
1)外圆粗加工复合循环(g71)指令格式 : g71 uδd re g71 pns qnf uδu wδw ff ss tt
指令功能: 切除棒料毛坯大部分加工余量,切削是沿平行z轴方向进行,如图19所示。a为循环起点,a-a-b为精加工路线。
图19 外圆粗加工复合循环 图20 端面粗加工复合循环 指令说明:①δd表示每次切削深度(半径值),无正负号; ② e表示退刀量(半径值),无正负号;
③ ns表示精加工路线第一个程序段的顺序号; ④ nf表示精加工路线最后一个程序段的顺序号;
⑤ δu表示x方向的精加工余量,直径值;
例题 :如图21所示,运用外圆粗加工循环指令编程。
图21 外圆粗加工复合循环例题 n010 g50 x150 z100 n020 g00 x41 z0 n030 g71 u2 r1 n040 g71 p50 q120 f100 n050 g01 x0 z0 n060 g03 x11 n070 g01 w-10 n080 x17 w-10 n090 w-15 n100 g02 x29 n110 g01 n120 x41 n130 g70 p50 q120 f30
2)端面粗加工复合循环(g72)指令格式: g72 wδd re
g72 pns qnf uδu wδw ff ss tt
指令功能: 除切削是沿平行x轴方向进行外,该指令功能与g71相同,如图20所示。指令说明 :
δd、e、ns、nf、δu、δw的含义与g71相同。例题:如图22,运用端面粗加工循环指令编程。
图22 端面粗加工复合循环例题 图23 固定形状切削复合循环 n010 g50 x150 z100 n020 g00 x41 z1 n030 g72 w1 r1 n040 g72 p50 q80 f100 n050 g00 x41 z-31 n060 g01 x20 z-20 n070 z-2 n080 x14 z1 n090 g70 p50 q80 f30 3)固定形状切削复合循环(g73)指令格式: g73 uδi wδk rd g73 pns qnf uδu wδw ff ss tt
指令功能:适合加工铸造、锻造成形的一类工件,见图23所示。指令说明: δi 表示x轴向总退刀量(半径值); δk 表示z轴向总退刀量; d 表示循环次数;
ns 表示精加工路线第一个程序段的顺序号; nf 表示精加工路线最后一个程序段的顺序号; δu 表示x方向的精加工余量(直径值); δw 表示z方向的精加工余量。
①固定形状切削复合循环指令的特点:
a.刀具轨迹平行于工件的轮廓,故适合加工铸造和锻造成形的坯料;b.背吃刀量分别通过x轴方向总退刀量δi和z轴方向总退刀量δk除以循环次数d求得;c.总退刀量δi与δk值的设定与工件的切削深度有关。
②使用固定形状切削复合循环指令,首先要确定换刀点、循环点a、切削始点a’和切削终点b的坐标位置。分析上图,a点为循环点,a’→b是工件的轮廓线,a→a’→b为刀具的精加工路线,粗加工时刀具从a点后退至c点,后退距离分别为δi+δu /2,δk+δw,这样粗加工循环之后自动留出精加工余量δu /
2、δw。
③顺序号ns至nf之间的程序段描述刀具切削加工的路线。例题: 如图14所示,运用固定形状切削复合循环指令编程。
图24 固定形状切削复合循环例题 图25 复合固定循环举例
n010 g50 x100 z100 n020 g00 x50 z10 n030 g73 u18 w5 r10 n040 g73 p50 q100 f100 n050 g01 x0 z1 n060 g03 x12 w-6 r6 n070 g01 w-10 n080 x20 w-15 n090 w-13 n100 g02 x34 w-7 r7 n110 g70 p50 q100 f30 4)精车复合循环(g70)指令格式: g70 pns qnf
指令功能:用g7
1、g7
2、g73指令粗加工完毕后,可用精加工循环指令,使刀具进行a-a`-b的精加工,(如图24)
指令说明:
ns表示指定精加工路线第一个程序段的顺序号; nf表示指定精加工路线最后一个程序段的顺序号;
g70~g73循环指令调用n(ns)至n(nf)之间程序段,其中程序段中不能调用子程序。5)复合固定循环举例(g71与g70编程)
加工图25所示零件,其毛坯为棒料。工艺设计参数为:粗加工时切深为7mm,进给速度/r,主轴转速500r/min;x向(直径上)精加工余量为4 mm,z向精加工余量为2mm,进给速度为/r,主轴转速800mm/min。程序设计如下: n01 g50 ;n02 g00 m03 s800;n03 g71 p04 q10 s500;n04 g00 s800;n05 g01 ;n06 ;n07 ;n08 ;n09 ;n10 ;n11 g70 p04 q10;n12 g00 ;n13 m05;n14 m30;3.螺纹加工自动循环指令
(1)单行程螺纹切削指令g32(g33,g34)指令格式 : g32 x(u)_ z(w)_ f_
指令功能:切削加工圆柱螺纹、圆锥螺纹和平面螺纹。指令说明:
格式中的x(u)、z(w)为螺纹中点坐标,f为以螺纹长度l给出的每转进给率。l表示螺纹导程,对于圆锥螺纹(图26),其斜角α在45°以下时,螺纹导程以z轴方向指定;斜角α在45°~90°时,以x轴方向指定。
①圆柱螺纹切削加工时,x、u值可以省略,格式为: g32 z(w)_ f _ ; ②端面螺纹切削加工时,z、w值可以省略,格式为: g32 x(u)_ f_;
③螺纹切削应注意在两端设置足够的升速进刀段δ1和降速退刀段δ2,即在程序设计时,应将车刀的切入、切出、返回均应编入程序中。
图26 螺纹切削 图27 螺纹切削应用 螺纹切削例题: 如图27所示,走刀路线为a-b-c-d-a,切削圆锥螺纹,螺纹导程为4mm , δ1 = 3mm,δ2 = 2mm,每次背吃刀量为1mm,切削深度为2mm。g00 x16 g32 x44 w-45 f4 g00 x50 w45 x14 g32 x42 w-45 f4 g00 x50 w45(2)螺纹切削循环指令(g92)
指令格式 : g92 x(u)_ z(w)_ r_ f_ 指令功能: 切削圆柱螺纹和锥螺纹,刀具从循环起点,按图28与图29所示走刀路线,最后返回到循环起点,图中虚线表示按r快速移动,实线按f指定的进给速度移动。
图28 切削圆柱螺纹 图29 切削锥螺纹 指令说明:
①x、z表示螺纹终点坐标值;②u、w表示螺纹终点相对循环起点的坐标分量;
③r表示锥螺纹始点与终点在x轴方向的坐标增量(半径值),圆柱螺纹切削循环时r为零,可省略;
④f表示螺纹导程。
例题: 如图30所示,运用圆柱螺纹切削循环指令编程。
图30 切削圆柱螺纹例题 图31 切削锥螺纹例题 g50 x100 z50 g97 s300 t0101 m03 g00 x35 z3 g92 z-21 g00 x100 z50 t0000 m05 m02
例题 : 如图31所示,运用锥螺纹切削循环指令编程。g50 x100 z50 g97 s300 t0101 m03 g00 x80 z2 g92 z-48 r-5 f2 x47 g00 x100 z50 t0000 m05 m02
(3)螺纹切削复合循环(g76)
指令格式 : g76 pm r a qδdmin rd g76 x(u)_ z(w)_ri pk qδd ff
指令功能:该螺纹切削循环的工艺性比较合理,编程效率较高,螺纹切削循环路线及进刀方法如图32所示。
图32 螺纹切削复合循环路线及进刀法 指令说明:
②r表示斜向退刀量单位数,或螺纹尾端倒角值,在—之间,以为一单位,(即为的整数倍),用00—99两位数字指定,(其中f为螺纹导程); ③a表示刀尖角度;从80°、60°、55°、30°、29°、0°六个角度选择;
④δdmin:表示最小切削深度,当计算深度小于δdmin,则取δdmin作为切削深度; ⑤d:表示精加工余量,用半径编程指定;δd :表示第一次粗切深(半径值); ⑥x、z:表示螺纹终点的坐标值; ⑦u:表示增量坐标值; ⑧w:表示增量坐标值;
⑨i:表示锥螺纹的半径差,若i=0,则为直螺纹; ⑩k:表示螺纹高度(x方向半径值); g76螺纹车削实例
图33所示为零件轴上 的一段直螺纹,螺纹高度为,螺距为6,螺纹尾端倒角为,刀尖角为60°,第一次车削深度,最小车削深度,精车余量,精车削次数1次,螺纹车削前先精车削外圆柱面,其数控程序如下:
图33 螺纹切削多次循环g76指令编程实例 o0028 /程序编号
n0 g50 ;/设置工件原点在左端面 n2 g30 u0 w0;/返回第二参考点
n4 g96 s200 t0101 m08 m03;/指定切削速度为200m/min,调外圆车刀 n6 g00 ;/快速走到外圆车削起点(,)n7 g42 g01 ;n8 ;/外圆车削 n9 g40 g00 ;n10 g30 u0 w0;n12 g97 s800 t0202 m08 m03;/取消恒切削速度,指定主轴转速800r/min,调螺纹车刀 n14 g00 ;/快速走到螺纹车削循环始点(,)n16 g76 p011160 ;/循环车削螺纹 n18 g76 ;n20 g30 u0 w0 m09;n22 m30;①m表示精车重复次数,从1—99;
本文地址:http:///zuowen/
少儿编程教案试听课篇2
辅 导 计 划
第()周辅导内容:scratch移动的小猫 辅导过程:
1、介绍scrather软件,让学生scrather软件主要功能和作用
2、学生自己探索scrather软件。
3、学生汇报scrather软件探索结果
4、展示任务:移动的小猫
5、辅导完成移动的小猫所需要使用的命令。
6、7、提交完成的作业 。
8、拓展任务:让小猫有更多的功能。如下,并交作业提交上来。按p键就跑 按j就叫喵的声音,按t就跳起来 ……
辅导小结:
辅 导 计 划
第()周 辅导内容:小猫走迷宫 辅导过程:
a、初步掌握舞台背景的编辑与导入方法。b、了解迷宫游戏的基本原则。c、能够为自己的迷宫游戏制订规则。
d、通过实践,了解并掌握自顶向下的编程思路。
e、通过自己编写游戏,激发学生学习兴趣,感受成功喜悦。
1、老师展示任务:走迷宫
2、学生讨论分析如何实现此任务
3、任务分解:
(1)跟着鼠标跑的小猫(2)制作迷宫背景(3)显示过关(4)出界就重来
4、程序分析:如右图 辅导小结:
辅 导 计 划
第()周 辅导内容:大鱼吃小鱼 辅导过程:
1、复习上节课的作品,并进行修正
2、学习新的命令
随机数
侦测到鼠标的距离
并利用这两条命令修改上节课的作业。
3、展示任务
4、分析任务:
(1)让学生讨论角色的建构、选择。背景的设置和处理
(2)每个角色程序的初步建构。
(3)自顶向下设计
5、程序设计
大鱼:
小鱼(左)
辅导小结: 辅 导 计 划
第()周 辅导内容:打蚊子 辅导过程:
a、初步掌握分析一个程序的能力。
b、通过实践,了解并掌握自顶向下的编程思路。c、学习广播命令,渗透程序消息机制。
d、通过自己编写游戏,激发学生学习兴趣,感受成功悦。
1、老师提出任务:打蚊子
2、学生讨论分析如何实现此任务
3、任务分解: (1)需要那些角色(2)角色有些什么行为(3)角色之间是否需要通信。
4、程序分析:如右图
辅导小结:
喜
少儿编程教案试听课篇3
少 儿 英 语 教 案 模 板
一、teaching demands and aims(
教学
目标)二、teaching important and difficult point(教学重点)
1、words
2、sentences
3、grammars
三、
teaching aids(教具)四、teaching procedures(教学过程)greeting(问候)warm up(热身)review(复习)new leon(新课)step one: step two: step three: follow up(叮咛)
五、homework(作业布置)
作 业 的 布 置
一、书面作业
1、每节课后教师可适当选择课后习题(书本或课外参考书)及字母作业。
2、低年纪的孩子适合听磁带读课文、画图、连线、写字母等简单作业;每学期两次测试:半期考和期末考试。
3、高年纪的孩子要求抄单词、背单词、背课文等书面作业;每节课前可做适当的听写练习;每个月可做适当的单元测试;期间两次大考:半期考和期末考。
二、磁带作业
1、适时布置(条件允许可每周一次):将本周学习的内容录进磁带,下周上交。
2、录制要求:首先让学生和老师打招呼,接着报朗诵单元,然后录作业内容,最后与老师说再见。(如:hello! am go is unit 11„„„ goodbye!amanda!)
3、听音修正:
(1)书面记录:边听边把学生的错音登记在学生手册上。(2)修正过程:
a:打招呼,先表扬肯定,后提出错误,注意错音的跟读 b:说悄悄话,增进师生感情交流 c:提出问题。
d:结束say:“ good bye!”
三、电话教学
1、时间安排:每月两次的电话教学,每生教学时间不超过8分钟。
2、教学内容:
(1)本周学习单词及课文的朗诵。(2)词句的翻译。(3)疑难解答。(4)家长的经验交流。
少儿编程教案试听课篇4
第一课
最简单的windows程序(2学时)
windows编程是一个很大的主题,涉及的方面也非常的多。windows始于90年代,至今windows编程的发展已经非常成熟了,而单独直接使用api的开发也是越来越少了。因此,市面上很少有泛泛的简单入门级的windows程序设计了。一个是系统级的windows编程介绍,如windows核心编程。一个是方向级的windows编程介绍如windows图形编程,windows网络编程等等。我们这次课的主要参考用书是windows核心编程,同时也参考了一些其他内容。鉴于教材的价格较贵,同时也需要考虑我们自身的学习内容不一定很多以及学时的原因,就没有定教材。看我的教案吧。
(1)win32 api api : application program interface。应用程序接口。api就是在进行windows编程时使用的函数库。本课就是
windows编程=api+c语言(或者c++语言)(2)开发环境
我校机器上安装了vc++ 。相信这是大家一直以来学习c,c++使用的开发环境。但vc60离我们实在太远了,它是一款90年代的产品,已经近20年的历史了。我们机器里还有vs2005 或 vs2008,那里面的c环境要比vc60强太多了,强烈建议大家使用更高级的平台。本次授课的开发环境有两个。一个是轻量级的dev c++,一个是重量级的vs2010.简单程序我们都将用dev c++来实现。
dev c++是一个非常小的c环境,但性能要优于vc60,调试环境不如vc60。这个环境在我们的共享资源里有,大家可以下载安装。安装过程非常简单,一直下一步即可。
这是其主界面。
(3)最简单的windows程序
提到最简单的程序,几乎所有的人都会想起经典的helloworld。
这不是windows程序,如果在以前这叫dos程序,现在叫windows控制台应用程序。它不算windows程序,但它很简单的就把helloword显示到屏幕上了。而windows程序要想把helloworld显示在屏幕上就确实不容易了。
访问helloworld网站,因为把helloworld显示在屏幕上并不容易,我们可以一点一点来,先让helloworld以文字形式出现在其他地方,,hinstance,lpstr,int nshow)defwindowproc(hwnd,uint,wparam,lparam)getmeage(lpmsg lpmsg,hwnd hwnd,uint wmsgfiltermin,uint wmsgfiltermax).如果得到wm_quit返回0 translatemeage(&msg)dispathmeage(&msg)beginpaint(&paintstruct)textout(hdc,int,int,lpstr,int)endpaint(hwnd,&paintstruct)作业:
自己建立应用,在窗口100,100位置显示helloworld 第三课 坐标位置及大小(4学时)
在我们写控制台应用的时候,不能自由的控制输出显示的位置。因此,没有学习过这方面的内容,现在我们创建了窗口,并且在窗口上显示了hello world。这个过程涉及到很多涉及位置和大小的因素,如窗口的大小,显示的位置,文字显示的位置。说到位置,就涉及定位,说到定位就要说坐标系。在屏幕上显示内容涉及到坐标空间的知识。在windows应用中坐标空间分如下几部分内容
1、物理坐标空间
物理坐标空间,指的是物理设备上对应的坐标系。如显示器
坐标原点在左上角。如下是一个1024*768的屏幕物理坐标(0,0)(1024,0)
(0,768)
2、设备坐标空间
基于设备上下文指定的坐标空间。如窗口内显示的文本,使用的坐标就是基于窗口内上下文的坐标。
可以看到设备空间是物理空间体系的一个子空间。设备空间可以依赖于一个窗口。换句话可以把设备空间理解为在物理空间上显示的一个对象,其子空间。下面我们通过一个小例子理解物理空间和设备空间
在窗口的标题条,以设备坐标,和物理坐标的形式显示鼠标在窗口内的位置
wndproc处理消息循环
wm_mousemove,鼠标移动时消息标识,是个整数。其参数lparam,的第16位代表设备坐标中的x,高16位代表设备坐标的y。point 是结构体。只有x,y两个成员 clienttoscreen,将设备坐标转换为屏幕坐标(物理坐标)sprintf:格式化字符串
setwindowtext:设window标题
3、页面坐标空间(逻辑坐标空间的一种)
作用,可以任意指定坐标原点,坐标轴方向,比例尺等信息。可以用来与设备无关的大小如厘米,毫米等。
页面坐标叫窗口,其表示有原点(x,y),宽度,高度组成(width,height)设备坐标叫视口,其表示有原点(x,y),宽度,高度组成(width,height)
页面坐标和设备坐标的变换关系,大写为设备坐标,小写为页面坐标
px=x+(px-x)*width/width py=y+(py-y)*height/height
px=x+(px-x)*width/width py=y+(py-y)*heigh/height
gdi函数使用页面坐标,显示出来时是设备坐标
通过对窗口,是否对应的四个参数的设置,可以实现特殊的变换。页面坐标是逻辑坐标的一种。在这个例子中我们一直使用 movetoex(,0,0,null);
lineto(,30,30);划线,movetoex是把画笔移动到指定位置(页面坐标),lineto是从画笔所在位置到目标位置画一条线。
在这个例子中,每次划线前通过设置视口,窗口结果使划线的结果不同。这种形式的坐标转换无法实现旋转
4、世界坐标空间(逻辑坐标空间的另一种)功能:比页面坐标空间方便,可以实现旋转 结构体 xform{ float em11, float em12, float em21, float em21, float edx, float edy, } 世界坐标到设备坐标的变换。小写到大写。px=em11*px+em21*py+edx;py=em12*px+em22*py+edy;默认为{1,0,0,1,0,0} 和设备坐标相同 {1001dxdy} {mx00my00}缩放 {-100-100}映像
旋转{cos(a),sin(a),-sin(a),cos(a),0,0}顺时针旋转a度 {cos(a),-sin(a),sin(a),cos(a),0,0}逆时针旋转a度
我们下面的例子通过rectangle(,0,0,50,50);绘制50*50的矩形,用循环配合世界坐标变换绘制特殊的图形
循环20次,每次旋转坐标轴的方向,绘制正方形。
总结
:物理坐标指的是屏幕坐标,不能改变坐标轴 设备坐标指的是窗口坐标,不能改变坐标轴
页面坐标和世界坐标均是逻辑坐标,可以改变坐标轴,世界坐标功能更强,可以旋转。理解这些概念的绘图是很重要的。
相关函数
bool clienttoscreen(hwnd hwnd, lppoint lppoint);设备坐标转屏幕坐标
bool screentoclient(hwnd hwnd,lppoint lppoint);屏幕坐标转设备坐标 int mapwindowpoints(hwnd hwndfrom, hwnd hwndto, lppoint lppoints, uint cpoints);
各个窗口设备坐标之间的转换
bool setwindoworgex(hdc hdc, int x,int y,lppoint lppoint);设置窗口的原点
setviewportorgex(hdc hdc,int x,int y,lppoint lppoint);设置视口的原点
bool setviewportextex(hdc hdc, int nxextent, int nyextent,lpsize lpsize);设置视口的width,height bool setwindowextex(hdc hdc, int nxextent,int nyextent, 设置窗口的width,height setmapmode设置页面坐标的映射模式 setgraphicsmode设置世界坐标的映射模式 rectangle绘制矩形,并填充内部 setworldtransform设置世界坐标变换 lineto:换线
movetoex:移动画笔
setwindowtext设置窗口标题
lptodp(hdc,lppoint,int)把逻辑坐标点转换为设备坐标点 作业:
使用movetoex,lineto,lptodp及世界坐标变换,绘制正六边形
lpsize lpsize);
提示:
画一条水平线后,将坐标原点移动到线的末尾,并将坐标轴旋转60度*n,重复上步 要将坐标移动到线尾需要使用lptodp
第四课 色彩及绘制(6学时)
(1)画点
像素:计算机屏幕上的一个点。是计算机屏幕显示的最小单位。点的个数取决于计算机的分辨率。如1024*768,则屏幕由1024*768个点组成。每个点都可以独立的显示一个颜色。计算机能够表示的颜色有256*256*256=16777216种。颜色的表示 colorref。定义颜色rgb colorref color=rgb(红,绿,蓝)随机绘制颜色点
需要#include srand:随机种子函数,传递的参数不同,可以生成不同的随机数序列
gettickcount(): api函数,得到系统开机后到现在的滴答数,特点就是每次返回的结果不重复。
两者的配合得到不重复的随机数序列
rand得到函数
setpixel设置某点的颜色
(2)画线
在以前的例子里我们一直用1个像素宽的黑色实现来画线。现在我们学习创建画笔,用画笔来画线。
步骤
1、创建画笔createpen(画笔类型,宽度,颜色)
2、将画笔选入设备上下文selectobject
3、用画笔绘制
4、将画笔选出设备
5、删除创建的画笔对象
selectobject是将gdi对象画笔选入设备上下文,并将当前的选出返回。因此我们两次使用selectobject,最后一个将以前的画笔选入,返回我们创建的,并在下一步删除画笔。
虚线只能支持宽度1.画线函数
polygon(hdc,lppoint,int).连接指定点,画多边形,封闭。如果画4边形则确认3个点即可。
polyline(hdc,lppoint,int).连接指定点,画多边,不封闭 movetoex:移动画笔
lineto:用当前的画笔划线
arc:画圆弧 bool arc(hdc hdc, int nleftrect, int ntoprect, int nrightrect,int nbottomrect, int nxstartarc,int nystartarc,int nxendarc,int nyendarc);前4个是画圆弧的矩形,后四个指定了弧开始和结束的位置 作业:画一条正弦曲线
使用sexpixel,lineto,movetoex实现
(3)画面
画面就是用画刷来填充 步骤
1、创建画刷createsolidbrush(颜色)
2、将画刷选入设备上下文selectobject
3、用画刷填充
4、将画刷选出设备
5、删除创建的画刷对象
用蓝色画刷填充矩形,矩形的边框是黑色。createsolidbrush:创建颜色画刷
rectangle:绘制矩形,用当前的pen绘制边框,用当前的brush来填充矩形内部 fillrect:画刷填充矩形。fillrect(hdc,&rect,hbrush)
使用fillrect不绘制边框,因为参数中有画笔,也不用selectobject了。ellipse:椭圆,圆。画边框,填充 pie:圆饼(4)位图
将文件系统中的位图显示到窗口中。绘制位图步骤
1、根据现有的设备上下文创建兼容的设备上下文
2、加载位图
3、绘制图像
4、删除加载的位图
5、删除兼容的设备上下文
bitblt是在设备上下文之间拷贝图像的函数,非常常用
在上一个列子的基础上,得到位图的大小并绘制实际大小的位图 作业:
在一个窗口上显示一副位图文件(*.bmp)。(5)字体和文本
创建逻辑字体并显示文本 步骤
1、创建逻辑字体
2、选入字体
3、输出文本
4、选出字体
5、删除字体
另一个与文本绘制有关的功能更强的函数是drawtext 总结:本课介绍了一些基本的绘图操作,其中涉及了较多的函数,这里只是介绍了基本的使用方式和原理。函数 srand rand getclientrect setpixel lineto movetoex createpen createsolidbrush createfontindirect bitblt selectobject deleteobject createcompatibledc loadimage rectangle fillrect deletedc 等等。
第五课 常用控件的使用(6学时)
在上面的几节课程中我们学习了如何建立windows 应用,并在图形环境下绘制图形。这些操作都是控制台应用中没有的。本章我们介绍如何在窗口中加入按钮等常规控件,并且处理它们。
一般控件种类,按钮,列表组合,编辑,列表,滚动条,静态文本。控件是一种特殊的窗口。这些特殊窗口的类已经由windows系统注册了,不需要我们注册。这些类的名字分别为。
button,combobox,edit,listbox,scrollbar,static(1)创建
任何时候均可,但通常在wm_create事件中处理
wm_create是在窗口创建时触发 wm_destory是在窗口销毁时触发
控件用createwindow创建,返回控件窗体的句柄,窗体的类型一定为ws_childwindow。附加的类型以或关系叠加。具体要参见msdn(2)操控
控制这些控件是通过向这些控件的窗体句柄发送特点消息来实现的 如 sendmeage(控件句柄,消息指,参数1,参数2)具体设置参见msdn 在上面的例子,我们处理下拉列表的时候使用了sendmeage发送消息(3)反馈
我们操作控件会触发控件的事件得到一些反馈,下面介绍如何得到这些反馈。总体上,我们把这些反馈过程叫通知。通知的过程是将反馈发送给父窗体,一般父窗体有两个事件接收控件的反馈
wm_notify,wm_command。wm_command hiword(wparam)通知消息号 loword(wparam)控件标识 wm_notify wparam :控件标识 lparam:nhmdr的指针
比如按钮的单机对应的事件是bn_clicked。该事件通过wm_command通知。
我们把上个例子补充完整,并且为每个控件指定id,指定的方式是在(hmenu)的后面写个整数,原则上应该不同。
hiword,得到一个字的高字节。loword得到一个字的低字节。(4)通用控件
我们上面介绍的是基本的控件,除了这些基本控件外还有一些通用控件。这些控件的使用和处理和基本的控件差不多,但功能更强大。animate_class : 动画控件,播放avi动画 datetimepick_class :日期时间下拉控件 hotkey_class :定义热键的控件 monthcal_class : 月份选择控件 progress_class :进度条控件 rebarclassname :rebar控件 statusclassname:状态条控件 toolbarclassname :工具条 tooltips_class :提示控件 trackbar_class :轨迹条 updown_class :上下箭头
wc_comboboxex :组合框扩展 wc_header :头控件
wc_ipaddress :ip地址控件 wc_listview :listview控件
wc_pagescroller :页滚动控件 wc_tabcontrol :tabcontrol控件 wc_treeview :树视图控件
通用控件在使用前使用initcommoncontrolsex初始化。使用这些通用控件要include 同时在连接时要连接
头部
这些控件和ie有关系,根据ie版本不同,控件的外观和功能有区别。
(5)创建菜单
createmenu:创建一个菜单
createpopupmenu:创建一个子菜单 appendmenu:向菜单增加项目 setmenu:将菜单联系到窗口
第六课 进程及线程(2学时)
进程:是一个正在运行的程序的实例。由两个部分组成1、一个是操作系统用来管理进行的内核对象。内核对象是系统用来存放关于进程信息的地方。
2、地址空间,每个进行都有自己的地址空间
进程本身不执行代码,进程要至少拥有一个线程,由线程来执行代码。每个线程都拥有自己的cpu寄存器和堆栈。当创建一个进程时系统会自动创建一个主线程。
createproce创建进程
内部执行细节:1 创建一个小的结构存放进程信息
2 分配地址空间
3 创建一个小的结构存放线程信息
4 执行c/c++启动代码,最终会调用winmain或main。结束一个进程 terminateproce
terminateproce 1 使用toolhelp遍历系统进程
列举系统全部的进程
需要
#include #include using namespace std;
线程
线程由两个部分组成1 内核对象
2 线程堆栈,用于维护执行代码时所有的函数参数和局部变量 进程是活波的,进程不执行任何东西,它是线程的容器。线程在进程的地址空间中执行代码。如果一个进程拥有多个线程则这些线程共享进程地址空间内的代码和数据。进程的地址空间要比线程占用更多的系统资源,因此要更多的使用线程。每个线程必须有个入口点函数,主线程是main,winmain。如果要创建一个线程,则这个线程的函数原型是这样的。dword winapi threadproc(pvoid pvparm){
return value;} 因为线程会共享全局变量,因此多线程应该少使用全局变量 1 线程创建
线程的创建不能直接使用createthread api函数。而要使用c编译环境自带的创建进程函数。
#include
unsigned uthreadid=0;uintptr_t hthread=
_beginthreadex(null, 0,threadproc,null,create_suspended,&uthreadid);第3个参数是线程函数地址,第4个参数是传递到线程的lpvoid,第5个参数为0线程马上运行、create_suspended需要激活才能运行。最后一个保存线程的id 进程和线程id是一个标识。不重复。进程和线程对象是系统对象,关闭这些对象对进程和线程的运行没有影响。
第7课 线程的调度和同步(6学时)线程暂停:
创建时使用create_suspended创建一个暂停的线程
使用suspendthread暂停线程
长时间不使用窗体 恢复线程:
resumethread
resumethread和suspendthread使用次数要对应。
休眠线程 sleep(毫秒)线程的同步是比较容易出错的地方,要多多实践和理解。参见线程冲突的例子。
每个线程对变量g累加10000次,创建6个线程,这是其中一次的运行结果。可以看到结果不是60000.对线程冲突问题的解释
一条c的g++对应的汇编指令为3条 mov eax,[g] inc eax mov [g],eax
如果我们创建两个线程,这两个线程将共享上面的代码。如果只有一个cpu的话,那同一时刻只能志执行一条汇编指令。但windows的调度机制可以保证代码按顺序执行,但不能保证不被打断。举例 g=0 mov eax,[g] //1 eax=0 inc eax
//1 eax=1 mov [g],eax //1 g=1 eax=1 mov eax,[g] //2 eax=1 inc eax
//2 eax=2 mov [g],eax //2 g=2 eax=2 1和2两个线程分别执行上面的3行代码,则g被加了两次,得到2。但实际上这是多线程的特例。真实的情况是cpu下条要执行那个线程的代码是随机的。如下
g=0 mov eax,[g] //1 eax=0 inc eax
//1 eax=1 mov eax,[g] //2 eax=0 inc eax
//2 eax=1 mov [g],eax //2 g=1 eax=1 mov [g],eax //1 g=1 eax=1
线程1在增加后没有及时赋值给g,然后线程2执行。最后g为1。这就是线程没有同步导致的问题,也是我们程序中出现的问题。解决方法(1)原子操作函数
使用interlockedexchangeadd,加减
interlockedexchange 赋值
interlockedcompareexchange 比较赋值
使用这些函数加减变量,保证只有执行完后其他进程才能进入。
结果是60000了,但是按理应该输出六次“线程运行了结束了”。但只显示两次,其实每次的结果多不会一样。这也是并发带来的问题。
解决方法(2)关键代码段
在使用关键段之前使用该函数
输出了6次,但每次对应的g值不一定以10000递增。如果把进入关键段的位置提前到最前面可以得到常规的理解
这时这6个进程某种意义上没有并发执行。
局限:关键代码段只能在一个进程内使用,没有等待时长的限制容易死锁。解决方法(3)内核对象 具备通知状态的内核对象 进程 线程 作业
文件修改通知 事件
可等待定时器 文件 信标
控制台输入 互斥对象 举个例子
取消注释后,一次显示一个。体现了该函数对线程的控制。
(1)事件控制
尽管waitforsingleobject可以等待很多对象的反应,但其主要还是用来处理事件等对象。事件是一种内核对象,有两个状态,一个用于表示该事件是自动重置事件还是人工重置事件。人工重置事件等待该事件的线程都会得到通知,自动重置事件只有一个线程会得到通知。另一个是事件的通知状态。一是未通知状态线程等待,一个是已通知状态,线程运行。createevent(null,自动(false)还是手工(true),通知(true)未通知(false)。handle createevent(lpsecurity_attributes lpeventattributes,bool bmanualreset,bool binitialstate,lptstr lpname);最后一个是为事件起个名字,同名事件不能建立两次。保证同名事件只能建立一次,可以为空。setevent:设为已通知状态 resetevent:设为未通知状态
openevent:打开一个已经存在的时间,返回handle
创建自动通知,立即通知事件
对自动通知事件setevent有意义,对手工通知事件无意义。手工通知同时显示6个窗口,自动通知一次显示1个(2)信标内核对象
使用信标可以确定让几个线程同时运行
createsemaphore(null,初始数,最大数,名称)opensemaphore
最多同时有3个线程运行。(3)互斥对象
互斥对象和关键代码段的作用相同,效率比关键代码段低。但运行不同进程间使用互斥对象,同时可以设置最大的等待时长。互斥对象和其他内核对象的区别,互斥对象可以记录调用的线程id,一旦线程得到该对象同线程的其他地方的等待将不会等待。createmutex(null,初始等待,名称)openmutex(0,null,名称)releasemutex(handle),只能是否本线程得到的对象
(4)