From 6e40a7dc95a9954bb34accf50e447aa76e59e125 Mon Sep 17 00:00:00 2001
From: "quentin.leblanc@etu.hesge.ch" <quentin.leblanc@etu.hesge.ch>
Date: Thu, 16 Jan 2020 14:38:38 +0100
Subject: [PATCH] wip

---
 1.2.syntax.pdf                               | Bin 172784 -> 173983 bytes
 1.3.oo.pdf                                   | Bin 272363 -> 282442 bytes
 base_tp/.gitignore                           |   3 +
 base_tp/.idea/.gitignore                     |   2 +
 base_tp/.idea/codeStyles/codeStyleConfig.xml |   5 ++
 base_tp/.idea/misc.xml                       |   7 ++
 base_tp/.idea/modules.xml                    |   9 +++
 base_tp/.idea/modules/base_tp_6009-build.iml |  25 +++++++
 base_tp/.idea/modules/base_tp_6009.iml       |  13 ++++
 base_tp/.idea/sbt.xml                        |  20 +++++
 base_tp/.idea/scala_compiler.xml             |   6 ++
 base_tp/.idea/vcs.xml                        |   6 ++
 base_tp/build.sbt                            |  73 +++++++++++++++++++
 base_tp/project/build.properties             |   1 +
 base_tp/src/intro/Euclid.scala               |  19 +++++
 15 files changed, 189 insertions(+)
 create mode 100644 base_tp/.gitignore
 create mode 100644 base_tp/.idea/.gitignore
 create mode 100644 base_tp/.idea/codeStyles/codeStyleConfig.xml
 create mode 100644 base_tp/.idea/misc.xml
 create mode 100644 base_tp/.idea/modules.xml
 create mode 100644 base_tp/.idea/modules/base_tp_6009-build.iml
 create mode 100644 base_tp/.idea/modules/base_tp_6009.iml
 create mode 100644 base_tp/.idea/sbt.xml
 create mode 100644 base_tp/.idea/scala_compiler.xml
 create mode 100644 base_tp/.idea/vcs.xml
 create mode 100644 base_tp/build.sbt
 create mode 100644 base_tp/project/build.properties
 create mode 100644 base_tp/src/intro/Euclid.scala

diff --git a/1.2.syntax.pdf b/1.2.syntax.pdf
index 665a626f39204a29ad282055a75d58cc86d74993..a8010c05cb9e9755b93ff845fb7e11b8a39153ed 100644
GIT binary patch
delta 1222
zcmexxlxzNZu7(!IEleL4)te|7nVKr(CuQ+++1TiZR2HNv=sV`+<(DYv2c;&LC`21t
zn(LVu8=4sz8XB7@7#dmVnVOhbm|7T_n42gV85tr=ni?TX#wzFsmnM~fjSNYxC{fV&
zRnTy;GBPkSFfcT*G&D9bFsL`xHZW8-Fwj)ccUFitR4`O9P>5B~56CYlEl@B8yDdmT
zKSV*}-+zWchEj%9hCGH6hD?S$1_cHmhE#?mh8%`OhCGI3O$Ge`1yf^V1p|d31%2oI
zypq(sl47vFP=-8)OokE$1qLey1%`aE-aLj>1_g#RhWbRPR1rfa*l-1gWQKf(T!vh*
zf_#PohL;RQ42fV%AzD+w78WxofUO1@0uoP#tI%P9m;rJqNM|NP5ko52JdlV2!vh8d
zhBAhHhD?SOO@(?pI|W{@)VvgM3_v^#W@3*FQ)4|7Q!`6r3qunVV+9ifJxeoFQ$r&Q
z3o|nXBUDL4OB7k;$bf_{I5z5$qQltI*aRLM0f|Mac_j*v<Pn4%xTr1$hd8Q>0}|6y
zk)puV*aQ+OL8-<0rA5i9#R{gzMi3$2`qY%nM5p`;g=hl>0|jF<BRvaaQw1Y)BRxYS
zGf+whDN4*MR<N<r4_43*Qn0gA&<}vR%)|_01~|1AD@2<bSb_yi4M9c)DVQ395)+7q
zSY~PnNgSqz5cilGnkpF7D}WS0OfoezhZ<l3rJ)8IK@Bv58fXMH&<JXv5!65<Q;0qz
zsCh<E^NgV889~i6hMH$=s8A0|uCPFcM1PP%EXbdTRAFcUwh$J`!I@R53Wf$o#tQnL
zE(*~aU*sxhE-!4^biXb};}(B|{bWrAjnCU&|9zPE$9dws)~C_IXHRN^f-)#SzeK^%
zz!2gJ{eYs>GKG3Wa|2^Ta|M0RytI6fsSu|@3xbHC)HIM(N-8*l3_-~OoXHG9N{ti@
zLB@uI@~w%25s2-RnwMUZp<rwZ@<DM)QEFl?FBby?0|Vp#|BMVwi#{-bs3lckYN<8@
vg9Rf4)3P202C#2o8o(T|cZ*9Bi%KerQqy?349$(r4J>%MR8?L5-FUeGhr}tV

delta 13
VcmbP#p6kO=u7(!IEleL40RS%42893s

diff --git a/1.3.oo.pdf b/1.3.oo.pdf
index abf78c944fd12c1f8c3220a48a2148bf77dd2949..ddc07ec748b97a5ebbfb1504dd85fe921d76c27e 100644
GIT binary patch
delta 10176
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
LVPt58=rsWVY188)

delta 17
YcmX>#Pw@45frb{w7N!>FEiA9q0Y_E`AOHXW

diff --git a/base_tp/.gitignore b/base_tp/.gitignore
new file mode 100644
index 0000000..382c6d7
--- /dev/null
+++ b/base_tp/.gitignore
@@ -0,0 +1,3 @@
+*~
+
+target/
diff --git a/base_tp/.idea/.gitignore b/base_tp/.idea/.gitignore
new file mode 100644
index 0000000..5c98b42
--- /dev/null
+++ b/base_tp/.idea/.gitignore
@@ -0,0 +1,2 @@
+# Default ignored files
+/workspace.xml
\ No newline at end of file
diff --git a/base_tp/.idea/codeStyles/codeStyleConfig.xml b/base_tp/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 0000000..a55e7a1
--- /dev/null
+++ b/base_tp/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+<component name="ProjectCodeStyleConfiguration">
+  <state>
+    <option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
+  </state>
+</component>
\ No newline at end of file
diff --git a/base_tp/.idea/misc.xml b/base_tp/.idea/misc.xml
new file mode 100644
index 0000000..99bf4f5
--- /dev/null
+++ b/base_tp/.idea/misc.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="JavaScriptSettings">
+    <option name="languageLevel" value="ES6" />
+  </component>
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_13" default="false" project-jdk-name="13 (2)" project-jdk-type="JavaSDK" />
+</project>
\ No newline at end of file
diff --git a/base_tp/.idea/modules.xml b/base_tp/.idea/modules.xml
new file mode 100644
index 0000000..1bab2e0
--- /dev/null
+++ b/base_tp/.idea/modules.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/modules/base_tp_6009.iml" filepath="$PROJECT_DIR$/.idea/modules/base_tp_6009.iml" />
+      <module fileurl="file://$PROJECT_DIR$/.idea/modules/base_tp_6009-build.iml" filepath="$PROJECT_DIR$/.idea/modules/base_tp_6009-build.iml" />
+    </modules>
+  </component>
+</project>
\ No newline at end of file
diff --git a/base_tp/.idea/modules/base_tp_6009-build.iml b/base_tp/.idea/modules/base_tp_6009-build.iml
new file mode 100644
index 0000000..e96fcff
--- /dev/null
+++ b/base_tp/.idea/modules/base_tp_6009-build.iml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module external.linked.project.id="base_tp_6009-build" external.linked.project.path="$MODULE_DIR$/../../project" external.root.project.path="$MODULE_DIR$/../.." external.system.id="SBT" sbt.imports="" sbt.resolvers="$USER_HOME$/.ivy2/cache|ivy|Local cache" type="SBT_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <output url="file://$MODULE_DIR$/../../project/target/idea-classes" />
+    <output-test url="file://$MODULE_DIR$/../../project/target/idea-test-classes" />
+    <exclude-output />
+    <content url="file://$MODULE_DIR$/../../project">
+      <sourceFolder url="file://$MODULE_DIR$/../../project" isTestSource="false" />
+      <excludeFolder url="file://$MODULE_DIR$/../../project/project/target" />
+      <excludeFolder url="file://$MODULE_DIR$/../../project/target" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="module-library">
+      <library name="sbt: sbt-and-plugins">
+        <CLASSES />
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+  </component>
+  <component name="SbtModule">
+    <option name="buildForURI" value="file:$MODULE_DIR$/../../" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/base_tp/.idea/modules/base_tp_6009.iml b/base_tp/.idea/modules/base_tp_6009.iml
new file mode 100644
index 0000000..7dcd8bf
--- /dev/null
+++ b/base_tp/.idea/modules/base_tp_6009.iml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module external.linked.project.id="base_tp_6009 [file:/media/quentin/Storage/Work/HEPIA/3rd_Year/BA-6/ParaProgAv/scala2020/base_tp/]" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="SBT" type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_13">
+    <output url="file://$MODULE_DIR$/../../target/dummy" />
+    <exclude-output />
+    <content url="file://$MODULE_DIR$/../..">
+      <excludeFolder url="file://$MODULE_DIR$/../../target" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="scala-sdk-2.12.6" level="application" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/base_tp/.idea/sbt.xml b/base_tp/.idea/sbt.xml
new file mode 100644
index 0000000..fca5810
--- /dev/null
+++ b/base_tp/.idea/sbt.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ScalaSbtSettings">
+    <option name="customVMPath" />
+    <option name="linkedExternalProjectsSettings">
+      <SbtProjectSettings>
+        <option name="externalProjectPath" value="$PROJECT_DIR$" />
+        <option name="modules">
+          <set>
+            <option value="$PROJECT_DIR$" />
+            <option value="$PROJECT_DIR$/project" />
+          </set>
+        </option>
+        <option name="sbtVersion" value="1.2.1" />
+        <option name="useAutoImport" value="true" />
+        <option name="useQualifiedModuleNames" value="true" />
+      </SbtProjectSettings>
+    </option>
+  </component>
+</project>
\ No newline at end of file
diff --git a/base_tp/.idea/scala_compiler.xml b/base_tp/.idea/scala_compiler.xml
new file mode 100644
index 0000000..ffb6cd7
--- /dev/null
+++ b/base_tp/.idea/scala_compiler.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ScalaCompilerConfiguration">
+    <profile name="sbt 1" modules="base_tp_6009" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/base_tp/.idea/vcs.xml b/base_tp/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/base_tp/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$/.." vcs="Git" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/base_tp/build.sbt b/base_tp/build.sbt
new file mode 100644
index 0000000..50c9da0
--- /dev/null
+++ b/base_tp/build.sbt
@@ -0,0 +1,73 @@
+organization := "ch.hepia"
+
+name := "tpscala"
+
+version := "2019"
+
+scalaVersion := "2.12.6"
+
+libraryDependencies ++= Seq(
+  "org.scalatest" %% "scalatest" % "3.0.5" % "test"
+)
+
+fork in run := true
+
+javaOptions in run += "-Xmx2G"
+
+
+scalacOptions ++= Seq(
+  "-deprecation",                      // Emit warning and location for usages of deprecated APIs.
+  "-encoding", "utf-8",                // Specify character encoding used by source files.
+  "-explaintypes",                     // Explain type errors in more detail.
+  "-feature",                          // Emit warning and location for usages of features that should be imported explicitly.
+  "-language:existentials",            // Existential types (besides wildcard types) can be written and inferred
+  "-language:higherKinds",             // Allow higher-kinded types
+  "-unchecked",                        // Enable additional warnings where generated code depends on assumptions.
+  "-Xcheckinit",                       // Wrap field accessors to throw an exception on uninitialized access.
+  "-Xfatal-warnings",                  // Fail the compilation if there are any warnings.
+  "-Xlint:adapted-args",               // Warn if an argument list is modified to match the receiver.
+  "-Xlint:by-name-right-associative",  // By-name parameter of right associative operator.
+  "-Xlint:constant",                   // Evaluation of a constant arithmetic expression results in an error.
+  "-Xlint:delayedinit-select",         // Selecting member of DelayedInit.
+  "-Xlint:doc-detached",               // A Scaladoc comment appears to be detached from its element.
+  "-Xlint:inaccessible",               // Warn about inaccessible types in method signatures.
+  "-Xlint:infer-any",                  // Warn when a type argument is inferred to be `Any`.
+  "-Xlint:missing-interpolator",       // A string literal appears to be missing an interpolator id.
+  "-Xlint:nullary-override",           // Warn when non-nullary `def f()' overrides nullary `def f'.
+  "-Xlint:nullary-unit",               // Warn when nullary methods return Unit.
+  "-Xlint:option-implicit",            // Option.apply used implicit view.
+  "-Xlint:package-object-classes",     // Class or object defined in package object.
+  "-Xlint:poly-implicit-overload",     // Parameterized overloaded implicit methods are not visible as view bounds.
+  "-Xlint:private-shadow",             // A private field (or class parameter) shadows a superclass field.
+  "-Xlint:stars-align",                // Pattern sequence wildcard must align with sequence component.
+  "-Xlint:type-parameter-shadow",      // A local type parameter shadows a type already in scope.
+  "-Xlint:unsound-match",              // Pattern match may not be typesafe.
+  "-Yno-adapted-args",                 // Do not adapt an argument list (either by inserting () or creating a tuple) to match the receiver.
+  "-Ypartial-unification",             // Enable partial unification in type constructor inference
+  "-Ywarn-dead-code",                  // Warn when dead code is identified.
+  "-Ywarn-extra-implicit",             // Warn when more than one implicit parameter section is defined.
+  "-Ywarn-inaccessible",               // Warn about inaccessible types in method signatures.
+  "-Ywarn-infer-any",                  // Warn when a type argument is inferred to be `Any`.
+  "-Ywarn-nullary-override",           // Warn when non-nullary `def f()' overrides nullary `def f'.
+  "-Ywarn-nullary-unit",               // Warn when nullary methods return Unit.
+  "-Ywarn-numeric-widen",              // Warn when numerics are widened.
+  "-Ywarn-unused:implicits",           // Warn if an implicit parameter is unused.
+  "-Ywarn-unused:imports",             // Warn if an import selector is not referenced.
+  "-Ywarn-unused:locals",              // Warn if a local definition is unused.
+  "-Ywarn-unused:params",              // Warn if a value parameter is unused.
+  "-Ywarn-unused:patvars",             // Warn if a variable bound in a pattern is unused.
+  "-Ywarn-unused:privates",            // Warn if a private member is unused.
+  "-Ywarn-value-discard"               // Warn when non-Unit expression results are unused.
+)
+
+scalacOptions in (Compile, console) --= Seq("-Ywarn-unused:imports", "-Xfatal-warnings")
+
+
+
+scalaSource in Compile := baseDirectory.value / "src"
+
+javaSource in Compile := baseDirectory.value / "java" / "src" 
+
+scalaSource in Test := baseDirectory.value / "test"
+
+    
diff --git a/base_tp/project/build.properties b/base_tp/project/build.properties
new file mode 100644
index 0000000..cc041cd
--- /dev/null
+++ b/base_tp/project/build.properties
@@ -0,0 +1 @@
+sbt.version=1.2.1
\ No newline at end of file
diff --git a/base_tp/src/intro/Euclid.scala b/base_tp/src/intro/Euclid.scala
new file mode 100644
index 0000000..a003b38
--- /dev/null
+++ b/base_tp/src/intro/Euclid.scala
@@ -0,0 +1,19 @@
+package ch.unige.hepia.tp
+
+object Euclid extends App {
+
+  // Implémenter correctement cette fonction
+  def gcd( i: Int, j: Int ): Int = {
+    if(j > i) return gcd(j, i)
+    if(j == 0) return i
+    else return gcd(j, i%j)
+  }
+
+
+
+  println( gcd( 100, 30 ) )  //=> 10
+  println( gcd( 30, 100 ) )  //=> 10
+  println( gcd( 12, 3732 ) ) //=> 12
+  println( gcd( 1, 3732 ) )  //=> 1
+  println( gcd( 25, 3732 ) ) //)> 1
+}
-- 
GitLab