创意简洁编码

本周,我们在有关参数和编码方面的学习非常出色,以解决本周在Apple的Learn to Code 2 Swift游乐场中的难题课程。 我很高兴教这些课程,因为我记得我在学习编码时发现参数对于编写简洁的代码有多么强大和有用。 在我们的Swift编码课程中,作为常规课程的一部分,我将为学生提供AirPlay操场,以便我们讨论该学生如何解决Swift操场难题。 之所以这样做,是因为我不断地强调,没有一个人会总是拥有所有正确的答案,或者总是拥有最好,最简洁,最具表现力的代码。 因此,我们(包括我)可以通过分析彼此编写的代码来学习一些东西。 学生展示自己的工作所使用的代码和解决问题的策略的剖析是我所拥有的一些最佳可教的时刻。 我认为“在特定位置放置”课程/操场会是一个非常棒的课程,因为它需要将多个参数传递给函数。 我是对的。 正是由于这个原因,这是一个很棒的课程/操场。 这个运动场使学生有机会创建两个功能并使用
world.place
函数传递三个参数:
(expert, at Column: Int, row: Int)
这样,学生就可以通过创建一个函数来解决难题,专家可以将其前进,旋转,收集宝石等。创建这些函数后,学生可以用七行代码来解决难题。 这是遵循本课精神的一个典型的,预期的结果。 这是以下典型答案的示例:

iPad的Swift Playgrounds:Brian Foutty在Vimeo上的特定位置放置。

但是,我的一位学生Elliot决定采用本课程的目标,即从字面上解决难题,并以尽可能少的代码行来解决难题。 我的许多学生为尽可能有效地解决难题而感到自豪。 Elliot将代码效率的挑战提高到了我未曾想到的水平。 他认为解决难题的最有效方法是使用新的
place
结合新方法
atColumn:row:参数
将他的expert角色放置在第一个宝石的确切图块上,并让他的专家收集宝石。 然后,他让他的expert角色移至下一颗宝石,并为所有三颗宝石​​重复该过程。

Swift Playgrounds:来自Vimeo的Brian Foutty创意简洁的编码。

Elliot非常迅速地完成了对操场的编码,并向我展示了他的解决方案。 我说:“太棒了!”他使用可用的代码以独特,有效和出乎意料的方式解决了这个问题。 然后,我们的班级能够进行讨论,以满足特定任务的严格要求,并学习编程以解决当前问题,同时使我们的代码具有足够的通用性,以用于其他游乐场或场合。 我认为Elliot的回答不会被创建该游乐场的Apple团队预期为可能的解决方案。 但是,与青少年一起工作通常会为成年人提供一种独特的方式来研究问题以及如何解决问题。 然后,作为教育工作者的任务是确保学生理解,无论他们多么聪明,简洁和有趣,您都无法通过捷径来解决所有问题(无论是否编码)。

注意:以下是一个截屏演示视频,向您展示如何在Swift Playgrounds应用中记录屏幕。

来自Vimeo的Brian Foutty的Swift Playgrounds屏幕录制。

最初发布在iFoutty.com — Swift Teacher