This shows you the differences between two versions of the page.
dss:workshop-01 [2019/08/14 14:13] eduard.staniloiu [1. Array Median Element] |
dss:workshop-01 [2021/03/10 23:46] (current) eduard.staniloiu |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Highschool workshop - Introduction to D ====== | ====== Highschool workshop - Introduction to D ====== | ||
+ | |||
+ | ===== Slides ===== | ||
+ | |||
+ | {{:dss:workshop-liceu.odp|Slides}} | ||
===== Exercises ===== | ===== Exercises ===== | ||
+ | |||
+ | For these exercises you can use the [[https://run.dlang.io|D Online Editor]]. | ||
+ | If you wish to install the D compiler and Standard Library, go to the [[https://dlang.org/download.html|download]] page. | ||
==== 1. Array Median Element ==== | ==== 1. Array Median Element ==== | ||
Line 12: | Line 19: | ||
- Write [[https://ocw.cs.pub.ro/courses/dss/laboratoare/01#unittests|unittests]] to validate your implementation. | - Write [[https://ocw.cs.pub.ro/courses/dss/laboratoare/01#unittests|unittests]] to validate your implementation. | ||
- | <note> | + | <note tip> |
Use small [[https://ocw.cs.pub.ro/courses/dss/laboratoare/01#functions|functions]] to increase code readability and testing. | Use small [[https://ocw.cs.pub.ro/courses/dss/laboratoare/01#functions|functions]] to increase code readability and testing. | ||
+ | </note> | ||
+ | |||
+ | <note> | ||
+ | Remember to pass the **-unittest** argument to the compiler, in order to enable the unittests. | ||
</note> | </note> | ||
Line 26: | Line 37: | ||
- Extend the previous point to also store their phone numbers. | - Extend the previous point to also store their phone numbers. | ||
- | <note> | + | <note tip> |
For bullet 2, use a [[https://ocw.cs.pub.ro/courses/dss/laboratoare/01#struct_vs_class|struct]], let's call it ColleagueInfo, to wrap their //email// and //phone// number. | For bullet 2, use a [[https://ocw.cs.pub.ro/courses/dss/laboratoare/01#struct_vs_class|struct]], let's call it ColleagueInfo, to wrap their //email// and //phone// number. | ||
<code> | <code> | ||
Line 41: | Line 52: | ||
</code> | </code> | ||
+ | </note> | ||
+ | |||
+ | ==== 4. @safe ==== | ||
+ | |||
+ | Inspect the [[https://github.com/edi33416/D-Summer-School/blob/ipworkshop/hs-workshop/4-safe/safe.d|source file]]. | ||
+ | Compile and run the code. | ||
+ | |||
+ | - What does the code do? Why is it useful to take the address of a parameter? | ||
+ | - Add the [[http://ocw.cs.pub.ro/courses/dss/laboratoare/03?&#safe_functions|@safe]] attribute to the **main** function. What happens? | ||
+ | - How can we get rid of the error messages? | ||
+ | |||
+ | ==== 5. Function templates ==== | ||
+ | |||
+ | Write a simple templated function that computes the sum of the elements of an array. | ||
+ | Your function should be able to work on any numeric type. This is exactly what we demoed in the presentation. | ||
+ | |||
+ | <note> | ||
+ | If you want to read more about D meta-programming, start with this introductory [[https://ocw.cs.pub.ro/courses/dss/laboratoare/02|hands-on]]. | ||
</note> | </note> | ||