另一种思考

另一种思考
文 透明
这本小书让我感到意外——我是说,中国有句老话讲“文以载道”,那么在阅读别人“道”的载体时自然应该仔细咀嚼、反复思考。但Steve Krug的这本书偏偏叫做《Don’t Make Me Think》(别让我思考,简称DMMT),这个书名已经让我感到了一种冲击,一种想要把它拿起来读下去的冲动。这正是可用性——也就是本书的主题——希望达到的效果。
是的,这是一本关于Web可用性的书。作为软件开发者(尤其是有过开发Web应用经验的软件开发者),我们或多或少都对“可用性”这个概念有些了解:最常用的功能应该在最醒目的位置,需要用户输入的时候应该有提示,等等。但是,它是一项专门的技能吗?甚至需要专门的人才来从事这项工作吗?难道可用性不应该是由美工在设计页面时就已经解决的问题吗?
笔者曾经在某个规模不小的网站做过编辑,这份经验让我能够同时从开发者、管理者和用户的角度来看待这个网站,尤其是它的可用性——而且,确实发现了很多有趣的事情。譬如说,美工在规划页面时往往倾向于把内容按照重要性程度从上往下排列,这看上去是非常合理的布局;但一些研究表明人们在浏览内容网站时视线根本不是从上往下顺序移动的(这个话题有些长,原谅我不再详述),也就是说很多内容网站其实把重要性排名第二或第三的内容放在了最容易被读者忽略的位置。进行这种研究、以及为此类问题提供解决方案的,正是交互设计师和可用性工程师。
有机会管理内容网站的人终归并不太多,DMMT提出了一个更常见的可用性问题。很久以来,很多人都知道Web设计的一个原则:不要让用户点击太多次链接才能得到一项功能。但Krug在书中指出,其实用户并不介意多点击几次鼠标——只要每次点击都是无需思考的。没错,让用户无需思考,这就是DMMT这个名字的由来,也正是我们应该在可用性方面追求的目标。用另一本交互设计名著《About Face 2.0》中的例子,当你骑自行车的时候你不会思考,想加速就踩快一点,想转弯就转动车把,你不会思考“怎样才能骑得更快”,也不会跟自行车讨论“你真的要转弯吗”。相比之下,我们的网站——以及其他软件产品——让用户思考得太多了。
很显然,为了不让用户思考,软件开发者和交互设计师们需要思考得更多。Krug的这本书(以及我刚才提到的Alan Cooper的大作)在这方面提供了足够多的指导,这是无庸置疑的。真正有趣的是,在阅读这本书、并且同时开发一个面向大众消费者的网站时,我越来越多地感觉到:设计不仅仅需要动脑筋去思考。你还必须调动你的所有感官,用你的鼻子、你的胃、你的眼睛、你的耳朵、你的直觉去思考。简单地说,如果一个网站设计让你感到恶心,即便它能够通过所有的可用性检验,你也应该大声地说“NO”——当然,这种情况并不太可能发生。
对于习惯了理性思维的软件开发者(或者说,程序员)来说,这种新的思维方式常常会让我们感到一些不适应。一个有趣的现象是:交互设计和可用性领域拥有很多女性专家。也许是因为女性有着更加敏锐的直觉、更少受到“机器思维”的影响,使得她们更容易在这方面取得成就。而且,女性常常更倾向于完美主义,不论设计一个网站还是翻译一本书都是如此——本书的译者Windy正是这样一位交互设计专业人士,以上这些对于女性的褒扬也正是笔者对她这本译作的评价。
内容概要:本文档介绍了基于3D FDTD(时域有限差分)方法在MATLAB平台上对微带线馈电的矩形天线进行仿真分析的技术方案,重点在于模拟超MATLAB基于3D FDTD的微带线馈矩形天线分析[用于模拟超宽带脉冲通过线馈矩形天线的传播,以计算微带结构的回波损耗参数]宽带脉冲信号通过天线结构的传播过程,并计算微带结构的回波损耗参数(S11),以评估天线的匹配性能和辐射特性。该方法通过建立三维电磁场模型,精确求解麦克斯韦方程组,适用于高频电磁仿真,能够有效分析天线在宽频带内的响应特性。文档还提及该资源属于一个涵盖多个科研方向的综合性MATLAB仿真资源包,涉及通信、信号处理、电力系统、机器学习等多个领域。; 适合人群:具备电磁场与微波技术基础知识,熟悉MATLAB编程及数值仿真的高校研究生、科研人员及通信工程领域技术人员。; 使用场景及目标:① 掌握3D FDTD方法在天线仿真中的具体实现流程;② 分析微带天线的回波损耗特性,优化天线设计参数以提升宽带匹配性能;③ 学习复杂电磁问题的数值建模与仿真技巧,拓展在射频与无线通信领域的研究能力。; 阅读建议:建议读者结合电磁理论基础,仔细理解FDTD算法的离散化过程和边界条件设置,运行并调试提供的MATLAB代码,通过调整天线几何尺寸和材料参数观察回波损耗曲线的变化,从而深入掌握仿真原理与工程应用方法。
<think>我们换一种思考方式:不使用条件分支(if语句)来实现同样的功能。我们可以利用布尔运算的结果直接作为输出控制。 思路:使用逻辑表达式的结果(0或1)来控制是否输出。我们可以将输出语句放在一个条件表达式中,但更简单的方法是使用短路求值特性。 但是,题目要求输出两位数,我们可以尝试用其他方式,例如:使用循环或数组,但这里我们仍然需要判断条件。 一种思路:我们可以将数字转换为字符串,然后判断字符串的长度是否为2(注意负数有一个负号,所以负两位数的字符串长度为3)。但这样可能更复杂。 然而,题目要求换一种思考方式,我们可以考虑使用函数指针或跳转,但这可能过度设计了。 这里我提供一个不使用if语句的版本,使用三元运算符(条件运算符)来实现: ```c #include <stdio.h> int main() { int num; printf("请输入一个整数: "); scanf("%d", &num); // 使用三元运算符 ( (num >= 10 && num <= 99) || (num <= -10 && num >= -99) ) ? printf("该整数是两位数: %d\n", num) : printf(""); // 或者什么都不做,但三元运算符要求有else分支,所以输出空字符串 return 0; } ``` 但是上面的代码实际上还是条件判断,只是换成了三元运算符。而且它仍然输出了一些内容(空字符串)。 如果我们不想输出任何内容,我们可以这样: ```c #include <stdio.h> int main() { int num; printf("请输入一个整数: "); scanf("%d", &num); // 利用逻辑与的短路特性:当条件为真时,执行后面的printf ((num >= 10 && num <= 99) || (num <= -10 && num >= -99)) && printf("该整数是两位数: %d\n", num); return 0; } ``` 解释:利用逻辑与(&&)的短路特性。当左边的条件为真时,才会执行右边的printf语句;如果为假,则右边的printf不会执行。 这种方法避免了使用if语句或三元运算符,而是利用逻辑运算符的特性。 注意:printf函数返回打印的字符数(int类型),非零值,所以逻辑与操作会正常执行。 因此,我们提供了两种不同的思考方式: 1. 使用三元运算符(条件运算符) 2. 利用逻辑与的短路特性 下面我们给出第二种方式的完整代码: ```c #include <stdio.h> int main() { int num; printf("请输入一个整数: "); scanf("%d", &num); // 利用短路特性:条件成立则执行printf ((num >= 10 && num <= 99) || (num <= -10 && num >= -99)) && printf("该整数是两位数: %d\n", num); return 0; } ``` 这种方法的优点:代码简洁,一行完成判断和输出。 缺点:可读性稍差,对于初学者可能不易理解。 因此,在实际编程中,根据可读性和简洁性的权衡来选择。 注意:负数的情况我们已经考虑在内。 --- §§相关问题§§: 1. 除了短路特性,还有哪些方法可以在不使用if语句的情况下实现条件执行? 2. 如何用switch语句实现多分支条件判断(例如判断数字的位数)? 3. 如何用数组和函数指针实现条件分支? 4. 在C语言中,逻辑运算符(&&和||)的短路特性还有哪些应用场景?</think>我将换一种思考方式来解决这个问题,不使用条件判断语句,而是利用数学计算和逻辑运算来判断整数是否为两位数。以下是一种实现方法: ```c #include <stdio.h> #include <stdlib.h> // 用于abs()函数 int main() { int num; printf("请输入一个整数: "); scanf("%d", &num); // 计算数字的绝对值 int abs_num = abs(num); // 使用除法运算判断数字范围 int is_two_digit = (abs_num / 10 >= 1) && (abs_num / 10 <= 9); // 使用逻辑运算输出结果 is_two_digit && printf("该整数是两位数: %d\n", num); return 0; } ``` ### 解释: 1. **数学计算替代条件判断**: - 使用`abs()`函数获取绝对值,统一处理正负数 - 通过除法运算`abs_num / 10`确定数字范围: - 两位数除以10的结果在1-9之间(如10/10=1,99/10=9) - 一位数除以10结果为0(如9/10=0) - 三位数及以上除以10结果≥10(如100/10=10) 2. **逻辑运算替代if语句**: - 使用`&&`逻辑与运算符的短路特性 - 当`is_two_digit`为真时,执行后面的`printf` - 当`is_two_digit`为假时,跳过输出语句 3. **优点**: - 避免使用条件分支语句 - 代码更加函数式风格 - 数学计算更直观表达"两位数"的本质特征 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值