12.循环结构 (do-while)
约 2111 字大约 7 分钟
2025-02-05
一、开场:开启循环新探索
标题:探索 do-while 循环的独特魅力 - 循环结构的新成员
副标题:对比中领悟,运用中精通
引入方式:展示一个自动饮料售卖机的工作流程视频,机器每次售卖饮料时,都要先执行出货动作,然后检查库存是否充足,若充足则继续等待下一次售卖,不充足就停止。提问学生,如何用编程实现这个先执行操作再判断条件的过程,从而引出 do-while 循环。
配图:选择一张自动饮料售卖机的图片,或者用简单的流程图展示先执行后判断的逻辑,让学生对这种特殊的循环逻辑有初步的直观感受。
二、do-while 循环初相识
do-while 循环的概念
讲解 do-while 循环是一种后测试循环结构,它会先执行一次循环体,然后再判断条件表达式。只要条件表达式为真,就会继续执行循环体,否则结束循环。
举例说明,比如在一个简单的登录验证程序中,用户先输入用户名和密码,程序验证后,若不正确则提示用户重新输入,这个过程就可以用 do-while 循环实现,因为至少要让用户输入一次信息。
do-while 循环的语法
do {
// 循环体,先执行的代码块
} while (条件表达式);
解释:循环首先执行do
后面花括号内的循环体,然后计算while
后面的 “条件表达式”。如果 “条件表达式” 的值为真(非零值),则再次执行循环体;如果为假(零值),则循环结束,程序继续执行while
语句后面的代码。注意,while
后面的分号不能省略。
代码示例 1:简单的计数循环
#include <iostream>
int main() {
int count = 1;
do {
std::cout << "当前计数: " << count << std::endl;
count++;
} while (count <= 5);
return 0;
}
逐行分析代码:
首先定义一个整型变量count
并初始化为 1。
进入do
循环体,执行std::cout << "当前计数: " << count << std::endl;
输出当前计数值,然后执行count++;
使count
自增 1。
接着计算while (count <= 5)
条件表达式,若count
小于等于 5,则返回do
循环体继续执行;当count
大于 5 时,循环结束。
强调 do-while 循环的执行流程与其他循环结构的不同之处,即先执行循环体,后判断条件。
三、do-while 循环的应用场景
输入验证场景
讲解在处理用户输入时,经常需要确保用户输入的内容符合特定格式或范围。例如,要求用户输入一个 1 到 100 之间的整数,使用 do-while 循环可以先让用户输入,然后验证输入是否合法,若不合法则提示用户重新输入。
代码示例:
#include <iostream>
int main() {
int num;
do {
std::cout << "请输入一个1到100之间的整数: ";
std::cin >> num;
if (num < 1 || num > 100) {
std::cout << "输入无效,请重新输入。" << std::endl;
}
} while (num < 1 || num > 100);
std::cout << "你输入的有效数字是: " << num << std::endl;
return 0;
}
分析代码:程序先执行do
循环体,提示用户输入整数,然后判断输入是否在 1 到 100 之间。若不在该范围,提示用户重新输入,直到输入有效数字为止。
菜单驱动程序场景
以一个简单的菜单驱动程序为例,展示 do-while 循环的应用。程序显示一个菜单,用户选择相应的选项后,程序执行对应功能,然后再次显示菜单,直到用户选择退出选项。
代码示例:
#include <iostream>
int main() {
int choice;
do {
std::cout << "菜单:" << std::endl;
std::cout << "1. 选项1" << std::endl;
std::cout << "2. 选项2" << std::endl;
std::cout << "3. 退出" << std::endl;
std::cout << "请选择: ";
std::cin >> choice;
switch (choice) {
case 1:
std::cout << "你选择了选项1" << std::endl;
break;
case 2:
std::cout << "你选择了选项2" << std::endl;
break;
case 3:
std::cout << "退出程序" << std::endl;
break;
default:
std::cout << "无效选择,请重新输入。" << std::endl;
}
} while (choice!= 3);
return 0;
}
分析代码:程序首先显示菜单,用户输入选择后,通过switch
语句执行相应功能。然后再次显示菜单,直到用户选择 3(退出选项),while (choice!= 3)
条件为假,循环结束。
四、do-while 循环与 while 循环的区别
执行顺序的区别
通过代码示例对比两者执行顺序的不同。
// while循环示例
#include <iostream>
int main() {
int count = 6;
while (count <= 5) {
std::cout << "while循环: " << count << std::endl;
count++;
}
return 0;
}
// do-while循环示例
#include <iostream>
int main() {
int count = 6;
do {
std::cout << "do-while循环: " << count << std::endl;
count++;
} while (count <= 5);
return 0;
}
分析:在 while 循环示例中,由于初始count
为 6,条件count <= 5
一开始就为假,所以循环体一次都不会执行。而在 do-while 循环示例中,无论条件如何,循环体至少会执行一次,先输出do-while循环: 6
,然后再判断条件,发现条件为假,结束循环。
适用场景的区别
总结 while 循环适用于在循环开始前就可以确定是否需要执行循环体的情况,例如遍历数组,事先知道数组的长度。而 do-while 循环适用于需要先执行一次操作,再根据结果判断是否继续循环的场景,如前面提到的输入验证、菜单驱动程序等。
五、实践与巩固
练习题目
让学生编写一个程序,使用 do-while 循环计算从 1 到 n 的平方和,n 由用户输入,要求输入的 n 必须是正整数,若不是则提示重新输入。添加注释说明代码功能。
给出一个包含 do-while 循环的程序,其中存在语法错误、逻辑错误以及与 while 循环混淆使用的问题,让学生找出并改正,同时添加注释解释修改原因。
互动环节
开展小组竞赛,将学生分成小组共同完成练习题目。完成后,每个小组推选一名代表进行代码展示和讲解,其他小组进行提问和评价,教师进行总结和点评,获胜小组可获得小奖品,如编程相关的文具、徽章等。
进行情景模拟编程,教师给出一些生活中需要先执行后判断的场景,如自动取款机的取款流程、自动洗衣机的洗衣流程等,让学生在规定时间内用 do-while 循环编写代码实现,然后邀请学生上台分享自己的代码思路,增强学生的编程实践能力和表达能力。
六、回顾与总结
总结
回顾 do-while 循环的概念、语法,强调其先执行循环体后判断条件的特点。
总结 do-while 循环在输入验证、菜单驱动程序等场景中的应用技巧和注意事项。
再次对比 do-while 循环与 while 循环在执行顺序和适用场景上的区别,帮助学生加深理解。
拓展
鼓励学生课后尝试编写更复杂的程序,如使用 do-while 循环实现一个简单的财务管理程序,用户可以不断输入收入和支出,程序实时计算余额,直到用户选择结束操作。
推荐一些编程学习资源,如在线编程社区(如 Stack Overflow、知乎编程板块等)、编程书籍(如《C++ Primer Plus》《Effective C++》等),让学生在课后能进一步学习和交流,深入了解 do-while 循环在实际项目中的应用,提升编程能力。
七、结束寄语
感谢语
感谢同学们在本节课的积极参与和认真学习,通过本节课的学习,大家对 do-while 循环有了深入的理解和掌握。希望大家在今后的编程学习中,能够准确运用 do-while 循环和 while 循环,解决各种编程问题,不断提升自己的编程水平和逻辑思维能力。