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
zcmaKszi-n(6vwX}Ek*nX=q(kAisJj>bDXLwf)=Dotq4gFNTGw9TuKnNgY8sp2i&1-
zEQpB(q>3LqLi`5|42Yct7#I*sB^ZJ7?tE#}g+%t{?%ntE-o5uOhwq$cADzAZsW;Py
z2e}7aN{H9*l$`l_x4kn|;9iWPI0Lt-x*2p>y;k)E^EqR}1IB}@^t?a@+^eCMvq_`m
zlg2f0Tch>NAlqsiiK|dvn&XsH%4i*Nl;(1lvU8MHz+FUNz<>hk8u4&61ZiSxg4>4j
z-y?F3jEEu;$;bfTKvr<JPVSNrXI%s|Knj6+6fDM3rlKr0y6b2kpbE$wKC#h8s0Gp|
zd1y@ujv5Z6i(5AFt2e}CNWPN<U1+C;v}YWqXw|MYM6Y*`cbvBj9jI0g@U09_uK@Xi
z&lYM1q*sA_VF5~xih8C3#ex4*3@NIf^y?yEo+rSg)w(Yw)+F$K%+)C)tDmw?7Nf|n
zsYX6g4pA50aWxuYf(eA8Jussu$vqvh$@uAr8{q~v(QyeRwv8!DQ>F1J>8cd##EYfX
zT=fRwrFa`U6jy}LtAW5Q)OeL~Uw1+~38NISHCxz_fWF;vWS(CzOt+@ck+g0WB-5xS
zNT!=fkA*YIisq24h(|IBG&dUxl4Lb22<&Kq+yc1;atq`Z$Ssf~Q1dYIVzfMNdED}Z
z<p~D4-Z)P3xZl_GIZwKRQR8r&<knzU0j>#fmzSVZ{&jZe$*X(&uRq_vRsM8l@518>
zlz+bc@#kywd-2iJ2j4oa5AQ2FmCYD$HKVME!fhmK3vyPY0?+L(NBvk+i_q*J!Of=X
zYg12|0x=z_xny`zbx=%WZ|Hlg4fuOSMH|^|z!KsK(kxNoX2~J=nL0X}BGU(lL=Vq*
r&G2HDkN~GI9};3tI~JTAJ<Y--+fG!!<gl8k(V*na%v`>DrR4krhr}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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
QquuS*Ra0w?T~tl~2WiveBLDyZ

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