diff --git a/1.2.syntax.pdf b/1.2.syntax.pdf index 665a626f39204a29ad282055a75d58cc86d74993..a8010c05cb9e9755b93ff845fb7e11b8a39153ed 100644 Binary files a/1.2.syntax.pdf and b/1.2.syntax.pdf differ diff --git a/1.3.oo.pdf b/1.3.oo.pdf index abf78c944fd12c1f8c3220a48a2148bf77dd2949..ddc07ec748b97a5ebbfb1504dd85fe921d76c27e 100644 Binary files a/1.3.oo.pdf and b/1.3.oo.pdf differ diff --git a/base_tp/.gitignore b/base_tp/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..382c6d7ac3e4555fa6290efb275ce587d48f5672 --- /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 0000000000000000000000000000000000000000..5c98b428844d9f7d529e2b6fb918d15bf072f3df --- /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 0000000000000000000000000000000000000000..a55e7a179bde3e4e772c29c0c85e53354aa54618 --- /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 0000000000000000000000000000000000000000..99bf4f57e474fce36beacfb1137b2a8a4680c8d0 --- /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 0000000000000000000000000000000000000000..1bab2e0eb4a8f609e400718eb924b59c65ed42e2 --- /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 0000000000000000000000000000000000000000..e96fcff7e628bd0a8cb6e2bf306b0feb09b705e9 --- /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 0000000000000000000000000000000000000000..7dcd8bf15c2ca32fa0a928239b67164ac2cf1d06 --- /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 0000000000000000000000000000000000000000..fca5810640c0c68371fd4f9a83d07a9d130cdb3e --- /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 0000000000000000000000000000000000000000..ffb6cd7daa24f72e57664474f481fbbe984dc4fe --- /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 0000000000000000000000000000000000000000..6c0b8635858dc7ad44b93df54b762707ce49eefc --- /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 0000000000000000000000000000000000000000..50c9da07ef52e8ab119db88651acd7b873179076 --- /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 0000000000000000000000000000000000000000..cc041cd499bb6c1ed7305738010ad5112b44acf1 --- /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 0000000000000000000000000000000000000000..a003b38aa6d30ac43bd2adaef13b8c278e133def --- /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 +}