Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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>​
  
dss/workshop-01.1565781237.txt.gz ยท Last modified: 2019/08/14 14:13 by eduard.staniloiu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0