D语言操作符与控制结构实战解析 - roadmap-retos-programacion项目

D语言操作符与控制结构实战解析 - roadmap-retos-programacion项目

roadmap-retos-programacion Ruta de estudio basada en ejercicios de código semanales en 2024 de la comunidad MoureDev para aprender y practicar lógica usando cualquier lenguaje de programación. roadmap-retos-programacion 项目地址: https://gitcode.com/gh_mirrors/ro/roadmap-retos-programacion

前言

本文将通过roadmap-retos-programacion项目中的D语言示例,深入讲解编程语言中的操作符和控制结构。D语言作为一门现代化的系统编程语言,继承了C家族语言的特性,同时引入了许多现代语言的便利功能。我们将从基础概念出发,逐步解析代码中的每个技术点。

操作符详解

算术运算符

算术运算符是编程中最基础的操作符,用于执行数学计算:

float a = 70f;
float b = 30f;

writeln("Suma: a + b = ", (a + b));          // 加法
writeln("Resta: a - b = ", (a - b));         // 减法
writeln("Multiplicación: a * b = ", (a * b)); // 乘法
writeln("División: a / b = ", (a / b));      // 除法
writeln("Resto: a % b = ", (a % b));         // 取模
writeln("Exponencial: a^^b = ", (a^^b));     // 指数运算
writeln("Incremento: ++a = ", (++a));        // 前置递增
writeln("Decremento: --b = ", (--b));        // 前置递减

技术要点

  • D语言使用^^进行指数运算,而非其他语言常见的**
  • 前置递增/递减会先改变变量值再返回结果,而后置版本会先返回结果再改变变量值

比较运算符

比较运算符用于比较两个值的关系,返回布尔结果:

writeln("Igual: a == b = ", (a == b));      // 相等
writeln("Distinto: a != b = ", (a != b));    // 不等
writeln("Mayor: a > b = ", (a > b));         // 大于
writeln("Menor: a < b = ", (a < b));         // 小于
writeln("Mayor o igual: a >= b = ", (a >= b)); // 大于等于
writeln("Menor o igual: a <= b = ", (a <= b)); // 小于等于

逻辑运算符

逻辑运算符用于组合多个布尔表达式:

writeln("and: a > 12 && b > 100 = ", (a > 12 && b > 100)); // 逻辑与
writeln("or: a > 12 || b > 100 = ", (a > 12 || b > 2));    // 逻辑或
writeln("not: !(a < b) = ", !(a < b));                     // 逻辑非

短路求值:D语言中的逻辑运算符支持短路求值,即如果第一个操作数已经能确定结果,就不会计算第二个操作数。

赋值运算符

赋值运算符用于给变量赋值:

writeln("a += b ; a = ", (a += b));  // 加法赋值
writeln("a -= b ; a = ", (a -= b));  // 减法赋值
writeln("a *= b ; a = ", (a *= b));  // 乘法赋值
writeln("a /= b ; a = ", (a /= b));  // 除法赋值
writeln("a %= b ; a = ", (a %= b));  // 取模赋值
writeln("a ^^= b ; a = ", (a ^^= b)); // 指数赋值

控制结构解析

条件语句

if (b < 10) {
    writeln("b es mayor que c");
} else if (a > b) {
    writeln("a es mayor que b");
} else {
    writeln("Nada de lo anterior se cumple");
}

技术要点

  • D语言的if语句与其他C家族语言类似
  • 条件表达式必须返回布尔值,D语言不会自动将非零值视为true

循环结构

for循环

for (int e = 0; e < b; e++) {
    writeln("\'e\' en este momento vale: ", e);
}

while循环

int q = 0;
while (q != 10) {
    writeln("q = ", q);
    q += 1;
}

do-while循环

int p = 0;
do {
    writeln("p aún no es igual a 10");
} while (++p != 10);

技术要点

  • do-while循环至少会执行一次循环体
  • 前置递增在条件判断前执行

switch语句

string z = "D";
switch (z) {
case "C":
    writeln("\'C\' Un buen lenguaje");
    break;
case "C++":
    writeln("\'C++\' Un horrible lenguaje");
    break;
case "D":
    writeln("\'D\' El mejor lenguaje");
    break;
default:
    break;
}

技术要点

  • D语言的switch支持字符串比较
  • 每个case需要明确的break语句,否则会继续执行下一个case

foreach循环

string saludo = "Hola";
foreach (letra; saludo) {
    writeln(letra);
}

技术要点

  • foreach是D语言提供的更简洁的迭代方式
  • 可以遍历数组、字符串、范围等各种可迭代对象

进阶挑战解析

项目中的进阶挑战要求打印10到55之间的偶数,排除16和3的倍数:

for (int i = 10; i < 56; i++) {
    if (i == 16) {
        continue;
    }
    else if ((i % 3) == 0) {
        continue;
    }
    else if ((i % 2) == 0) {
        writeln(i);
    }
}

算法分析

  1. 使用for循环遍历10到55的范围
  2. 使用continue跳过不符合条件的数字
  3. 先检查是否为16,再检查是否为3的倍数
  4. 最后检查是否为偶数
  5. 使用嵌套的条件判断结构确保逻辑清晰

优化建议

  • 可以将多个条件合并为一个复合条件
  • 可以从10开始,每次递增2,直接遍历偶数

总结

通过roadmap-retos-programacion项目中的D语言示例,我们全面了解了编程语言中的操作符和控制结构。这些基础知识是编程的核心,掌握它们对于学习任何编程语言都至关重要。D语言在这些基础概念上提供了清晰而强大的实现,同时保持了与C家族语言的兼容性。

建议读者可以尝试修改这些示例,或者创建自己的变体来加深理解。例如,可以尝试将for循环改为while循环实现,或者尝试组合不同的操作符来创建更复杂的表达式。

roadmap-retos-programacion Ruta de estudio basada en ejercicios de código semanales en 2024 de la comunidad MoureDev para aprender y practicar lógica usando cualquier lenguaje de programación. roadmap-retos-programacion 项目地址: https://gitcode.com/gh_mirrors/ro/roadmap-retos-programacion

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邵冠敬Robin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值