语 句 北 京 理 工 大 学 计 算 机 学 院 金 旭 亮
程 序 由 语 句 构 成, 编 程 从 语 句 开 始
三 种 典 型 的 程 序 代 码 执 行 流 程 顺 序 执 行 按 条 件 选 择 一 条 分 支 执 行 选 择 结 构 在 特 定 场 景 中 反 复 执 行 特 定 语 句 循 环 结 构
选 择 结 构 与 逻 辑 表 达 式
程 序 流 程 图 在 程 序 设 计 中, 经 常 使 用 一 种 称 为 程 序 流 程 图 的 示 意 图 来 表 示 程 序 的 执 行 流 程
使 用 if/else 语 句 实 现 程 序 中 的 选 择 结 构 if ( 条 件 ) { // 执 行 语 句 块 A } else { // 执 行 语 句 块 B } 编 程 语 言 中 的 选 择 结 构 JavaScript 中 的 if/else 语 句
选 择 结 构 示 例 ( 伪 代 码 ) 使 用 逻 辑 表 达 式 表 达 条 件, == 是 逻 辑 判 等 运 算 符 if 和 else 是 用 于 实 现 选 择 结 构 的 两 个 关 键 字 (Key Word) if ( 天 气 睛 朗 == true ) 我 们 去 爬 香 山 ; else 我 们 呆 在 家 里 看 电 视 ; 条 件 满 足 (true) 时, 执 行 这 句 条 件 不 满 足 (false) 时, 执 行 这 句 逻 辑 表 达 式 通 常 用 于 表 示 某 种 条 件 是 否 得 到 满 足 当 程 序 运 行 时, 计 算 机 解 析 逻 辑 表 达 式, 会 得 到 一 个 值, 在 C# 中, 这 个 值 只 有 true( 真 ) 或 false( 假 ) 两 种 情 况 表 达 式 值 为 true, 表 示 条 件 满 足, 为 false, 表 示 条 件 不 满 足 在 if 语 句 中, 基 于 逻 辑 表 达 式 执 行 的 结 果 执 行 特 定 的 分 支
选 择 结 构 中 的 条 件, 用 表 达 式 来 表 达
从 变 量 到 表 达 式 使 用 运 算 符 将 变 量 和 数 字 等 连 接 起 来, 就 构 成 了 表 达 式 (Expression) var value = 100; console.info(value * 2); 表 达 式 不 管 表 达 式 本 身 有 多 长, 有 多 复 杂, 它 最 后 一 定 会 有 一 个 值, 就 象 变 量 一 样, 可 以 用 在 各 种 语 句 中 注 意 : 表 达 式 没 有 分 号, 语 句 才 有 分 号, 有 些 表 达 式 加 上 分 号, 它 就 变 成 了 表 达 式 语 句
JavaScript 中 用 于 构 建 逻 辑 表 达 式 的 运 算 符 运 算 符 说 明 > 大 于, 实 例 : 5>10, 值 为 false < 小 于 == 等 于, 实 例 : 9== 100, 值 为 false >= 大 于 等 于 <= 小 于 等 于!= 不 等 于, 实 例 : 100!= 101, 值 为 true
If 语 句 实 例 每 次 运 行, 依 据 生 成 的 随 机 数, 会 输 出 两 种 结 果 之 一
选 择 结 构 的 嵌 套 if ( 条 件 ) { if ( 条 件 ) { 语 句 块 A } else { 语 句 块 B } } else { if ( 条 件 ) { 语 句 块 C } else { 语 句 块 D } } 嵌 套 在 条 件 语 句 内 部 的 条 件 语 句, 整 个 语 句 被 当 作 一 个 语 句 块 处 理, 可 以 看 成 是 一 个 整 体 除 非 使 用 { 和 } 为 语 句 划 分 了 块, 否 则,else 总 是 与 它 最 近 的 if 配 套 弄 错 if 和 else 的 配 套 关 系, 有 可 能 会 带 来 严 重 的 问 题, 推 荐 加 上 足 够 的 { 和 } 给 与 明 确 区 分
表 达 式 求 值 时 必 须 知 道 的 true 与 false 以 下 值 被 认 为 是 false null, undefined, NaN, "", 0 除 了 以 上 值, 其 它 的 都 认 为 是 true
嵌 套 的 条 件 语 句 每 次 运 行, 会 生 成 四 种 结 果 之 一
逻 辑 表 达 式 的 组 合 使 用 && 组 合 两 个 表 达 式, 只 有 两 个 条 件 都 满 足 ( 都 为 true ) 时, 整 个 条 件 才 算 满 足, 可 以 将 && 与 汉 语 中 的 并 且 对 应 上 if ( 天 气 睛 朗 && 两 人 都 有 空 ) 张 三 李 四 一 块 去 爬 香 山 ; else 张 三 李 四 呆 在 家 里 看 电 视 ; 三 种 用 于 组 合 逻 辑 表 达 式 的 运 算 符 &&(And / 与 ) (Or/ 或 )!(Not/ 非 )
逻 辑 表 达 式 的 组 合 解 析 结 果 假 设 A 和 B 都 是 一 个 逻 辑 表 达 式, 对 其 使 用 与 或 非 组 合 运 算 的 规 律 如 下 : 1 A && B: 只 有 A 和 B 都 为 true, 结 果 才 为 true 2 A B: 只 要 A 和 B 中 有 一 个 为 true, 结 果 就 为 true 3!A: 结 果 总 是 与 A 相 反, 比 如 A 为 true, 则!A 为 false
Not 和 Or Not 逻 辑 运 算 符 实 例 Or 逻 辑 运 算 符 实 例 if (! 天 气 下 雨 ) 我 们 去 爬 香 山 ; else 我 们 呆 在 家 里 看 电 视 ; if ( 我 发 工 资 了 有 人 请 客 ) 我 就 去 大 饭 店 吃 顿 好 的 ; else 我 回 宿 舍 泡 康 师 傅 方 便 面 吃 ;
JavaScriptg 中 的 双 重 否 定 (!!) 运 算 符!! 运 算 符 把 后 面 跟 着 的 东 西 变 成 一 个 bool 值, 本 身 是 真 的 就 是 true, 本 身 是 假 的 就 是 false!! 运 算 符 多 出 现 于 条 件 语 句 中
开 发 中 运 算 符 的 一 种 典 型 用 法 var ns = ns {}; 1 2 如 果 ns 未 定 义, 则 等 于 {}( 代 表 一 个 空 的 对 象 ), 否 则, 等 于 ns 经 常 使 用 这 种 方 法 在 JavaScript 代 码 中 定 义 命 名 空 间 (namespace) 命 名 空 间, 是 程 序 设 计 语 言 中 的 术 语, 它 表 示 程 序 中 各 种 构 成 元 素 的 集 合, 你 可 以 把 它 想 象 是 是 一 堆 名 字 的 集 合, 每 个 名 字 都 代 表 着 程 序 中 某 种 特 定 的 构 成 元 素 ( 比 如 类 结 构 枚 举 等 等 )
表 达 式 组 合 示 例
动 手 动 脑 编 写 一 个 程 序, 在 运 行 时 让 用 户 输 入 两 个 整 数, 程 序 判 断 出 大 小, 输 出 较 大 的 数 提 示 : 1. 可 以 使 用 window.prompt() 方 法 读 取 用 户 输 入 的 值 2. 用 户 输 入 的 内 容 是 字 符 串, 为 了 比 较 大 小, 需 要 将 其 转 换 为 数 值 类 型 再 进 行 比 较 ( 可 以 用 parseint()) 来 做 到 这 点
多 值 选 择 结 构 JavaScript 提 供 了 switch 结 构, 用 于 对 同 一 个 变 量 的 多 个 值 进 行 判 断 switch (intvalue) { case 0: CaseZero(); break; case 1: CaseOne(); break; default: CaseOthers(); break; } 程 序 运 行 时, 依 据 intvalue 变 量 的 真 实 值, 选 择 一 个 分 支 执 行 如 果 都 不 匹 配, 则 执 行 默 认 分 支 ( 即 名 字 为 default 的 那 个 ) 为 了 保 证 一 个 值 执 行 一 个 分 支, 每 个 分 支 后 都 应 该 加 一 个 break; 语 句 ( 最 后 一 个 分 支 可 略 )
多 值 选 择 结 构 实 例 用 户 输 入 考 试 成 绩, 程 序 给 出 : 优 良 中 及 格 和 不 及 格 的 相 应 评 价 如 果 有 两 个 值 执 行 相 同 的 代 码, 可 以 将 其 合 并, 写 在 一 起 动 手 试 一 试 : 去 掉 所 有 的 break;, 你 得 到 了 什 么 结 果?
学 了 马 上 用, 完 成 两 道 编 程 题 1 编 写 一 个 程 序, 让 用 户 输 入 一 个 今 天 的 气 温, 程 序 给 出 太 热 了 太 冷 了 真 舒 服 等 结 论 2 编 写 一 个 最 简 单 的 计 算 器 : (1) 用 户 输 入 两 个 数 字 (2) 用 户 输 入 + - * / 四 个 运 算 符 之 一 (3) 程 序 输 出 计 算 结 果
JavaScript 中 循 环 语 句 的 使 用 方 法 重 复 的 艺 术
程 序 设 计 中 的 循 环 结 构 所 谓 循 环 结 构, 其 实 就 是 在 特 定 的 场 景 下, 某 些 语 句 将 被 反 复 地 执 行 多 次
do/while 循 环 结 构 的 流 程 图 var i = 0; do { console.info(i) ; i++; } while ( i < 10 ); 循 环 体 循 环 结 束 判 断 条 件 do/while 循 环 的 特 点 : 先 做 事, 再 判 断 循 环 条 件 是 否 满 足, 满 足 就 继 续 执 行 循 环 体
while/do 循 环 结 构 实 例 : 使 用 While 循 环 计 算 1 到 100 的 整 数 之 和 语 法 while( 逻 辑 表 达 式 ) { 循 环 体 语 句 ; } while/do 循 环 的 特 点 : 先 判 断 循 环 条 件, 满 足 了 再 做 事
学 了 马 上 用 使 用 Math.random() 方 法 生 成 10 个 随 机 整 数, 计 算 出 它 们 的 和 与 平 均 值, 其 输 出 示 例 如 下 : 10 个 数 为 : 5,10,99, 总 和 为 : 平 均 值 为 : 提 示 : (1) parseint(math.random()*100), 可 以 得 到 一 个 [0,100) 范 围 内 的 整 数 (2) 输 出 时, 将 一 个 数 字 与 字 符 串 相 +, 可 以 得 到 一 个 新 的 字 符 串 比 如 :100+,, 可 以 生 成 100,
针 对 不 同 的 场 景, 选 择 合 适 的 处 理 方 式 当 需 要 执 行 次 数 不 定 的 循 环 时, 使 用 do/while 或 while/do 循 环 是 最 自 然 的 选 择 当 需 要 执 行 次 数 固 定 的 循 环 时, 使 用 for 循 环 就 变 成 了 最 自 然 的 选 择
for 循 环 语 句 for( 循 环 初 始 表 达 式 ; 循 环 结 束 条 件 ; 执 行 完 循 环 体 后 才 执 行 的 表 达 式 ) { 循 环 体 语 句 块 ; } 示 例 : 使 用 for 循 环 从 1 加 到 100
学 会 调 试 程 序 可 以 使 用 这 些 按 钮 完 成 单 步 执 行 程 序 等 功 能 使 用 Chrome 的 Sources 选 项 卡, 可 以 给 JavaScript 代 码 设 置 断 点 可 以 在 这 块 看 到 变 量 的 值, 双 击 可 直 接 修 改 其 值
循 环 的 退 出 与 提 前 中 止
break 和 continue 的 作 用 与 区 别 break; continue; break: 提 前 结 束 循 环, 后 面 还 没 有 执 行 的 循 环 也 不 再 执 行 continue: 提 前 结 束 当 前 循 环 ( 本 轮 循 环 中 还 没 有 执 行 的 代 码 不 再 执 行 ), 后 面 的 循 环 继 续 执 行
永 远 不 结 束 的 死 循 环 在 某 些 场 景, 无 法 预 知 到 底 要 执 行 多 少 轮 循 环, 也 不 知 道 要 运 行 多 长 时 间, 举 几 个 例 子 Windows 需 要 时 刻 监 控 鼠 标 与 键 盘, 以 便 及 时 地 响 应 用 户 操 作 某 股 票 软 件 需 要 及 时 地 提 取 股 票 信 息, 将 涨 跌 信 息 及 时 地 通 知 用 户 在 这 些 场 景 中, 使 用 死 循 环 是 合 理 的 防 病 毒 软 件 需 要 在 后 台 监 控 各 种 活 动, 发 现 危 险 时 向 用 户 报 警
使 用 JavaScript 实 现 死 循 环 while( true ) { 循 环 体 ; } for( ; ; ) { 循 环 体 ; } do { 循 环 体 ; } while( true ); 使 用 这 种 编 程 方 式, 在 循 环 体 中, 一 定 要 有 一 条 检 测 语 句, 检 测 特 定 的 条 件 是 否 满 足, 当 条 件 满 足 时, 使 用 break ( 或 return ) 退 出 循 环
示 例 使 用 死 循 环 的 方 法 编 程 计 算 1 到 100000 的 和
使 用 循 环 结 构 访 问 数 据 集 合 在 面 向 对 象 的 软 件 中, 我 们 会 经 常 遇 到 数 据 集 合 这 一 概 念 数 据 集 合, 顾 名 思 义, 就 是 数 据 的 集 合 要 遍 历 数 据 集 合, 我 们 可 以 使 用 foreach 循 环
数 据 集 合 的 遍 历 所 谓 遍 历, 换 一 个 说 法, 就 是 逐 个 地 访 问 遍 历 数 据 集 合 最 自 然 的 方 式, 就 是 使 用 foreach 循 环 arr 是 被 遍 历 的 集 合, 在 每 轮 循 环 中,element 变 量 代 表 集 合 中 的 每 个 元 素 的 位 置,arr[element] 取 出 这 个 位 置 上 的 数 据
循 环 语 句 的 等 价 性 原 则 各 种 类 型 的 循 环 语 句 都 是 等 价 的, 可 以 把 一 种 类 型 的 循 环 语 句 用 另 一 种 类 型 的 循 环 语 句 替 换 而 不 会 影 响 到 程 序 的 功 能
检 测 一 下 你 的 学 习 成 果 请 编 程 计 算 出 以 下 表 达 式 的 值 : 2-4+6-8+10- +100 =?