Cours 23.02
This commit is contained in:
commit
7210b269e9
|
@ -0,0 +1,6 @@
|
|||
.bloop/
|
||||
.bsp/
|
||||
.metals/
|
||||
target/
|
||||
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
val scala3Version = "3.1.0"
|
||||
|
||||
lazy val root = project
|
||||
.in(file("."))
|
||||
.settings(
|
||||
name := "hepiascala",
|
||||
version := "2.1.0",
|
||||
scalaVersion := scala3Version,
|
||||
libraryDependencies ++= Seq(
|
||||
//Dépendences
|
||||
),
|
||||
Compile / scalaSource := baseDirectory.value / "src",
|
||||
Test / scalaSource := baseDirectory.value / "test-src"
|
||||
)
|
|
@ -0,0 +1,36 @@
|
|||
# TP 1
|
||||
|
||||
Les buts de ce TP sont:
|
||||
- de configurer un environement de travail;
|
||||
- prendre en main l'outil SBT;
|
||||
- découvrir la syntaxe de base de Scala 3.
|
||||
|
||||
## Installation de SBT
|
||||
|
||||
Installez l'outil SBT (obligatoire) pour compiler et exécuter le code. Celui-ci dépend de Java.
|
||||
|
||||
Plusieurs options d'installation:
|
||||
|
||||
- Votre distribution (Linux)
|
||||
- Le script [sbt-extras](https://github.com/dwijnand/sbt-extras) (Linux ou MacOS)
|
||||
- Le [site officiel](https://www.scala-sbt.org/) (Windos ou MacOS)
|
||||
- Cloner le site du cours, allez à la racine, et lancez `sbt`, les commandes
|
||||
suivantes se lanceront dans le shell `sbt` directement.
|
||||
|
||||
## Tester SBT
|
||||
|
||||
- Pour compiler le projet: `compile`. La première fois il télécharge tout ce dont il a besoin.
|
||||
- Pour accéder à un interpréteur Scala: `console`.
|
||||
- Exécutez le _Hello, World_ avec: `runMain ch.hepia.tp.hello`.
|
||||
|
||||
## Premier TP
|
||||
|
||||
- Etudiez le fichier `src/helloWorld.scala`
|
||||
- Etudier le fichier `src/tp1.scala`
|
||||
- Exécutez ce dernier fichier avec `runMain ch.hepia.tp.tp1`
|
||||
- Implémenter les fonctions, jusqu'à ce que tout soit bon
|
||||
|
||||
### ATTENTION
|
||||
|
||||
Les seuls mots-clés autorisés sont `val`, `def`, `if` et `else`. Tous les autres
|
||||
sont strictement interdits (pas de `var`, `while`, `return`, etc.)
|
|
@ -0,0 +1 @@
|
|||
sbt.version=1.8.2
|
|
@ -0,0 +1,4 @@
|
|||
package ch.hepia.tp
|
||||
|
||||
@main
|
||||
def hello = println("Hello, world !")
|
|
@ -0,0 +1,65 @@
|
|||
package ch.hepia.tp
|
||||
|
||||
//Calcule la valeur absolue d'un double
|
||||
def abs( x: Double ): Double =
|
||||
if( x < 0 ) -x else x
|
||||
|
||||
//A IMPLEMENTER
|
||||
//doit retourner 1 si x est positif, -1 si x est négatif
|
||||
//et 0 sinon
|
||||
def sign( x: Double ): Double = 0
|
||||
|
||||
//A IMPLEMENTER
|
||||
//C'est juste la fonction factorielle
|
||||
def fac( n: Long ): Long = -1
|
||||
|
||||
//A IMPLEMENTER
|
||||
//L'algorithme suivant est en pseudocode. Traduisez le
|
||||
//en Scala, en utilisant uniquement les mots-clé autorisés
|
||||
//
|
||||
//function gcd(a, b)
|
||||
// while b ≠ 0
|
||||
// t := b
|
||||
// b := a mod b
|
||||
// a := t
|
||||
// return a
|
||||
def gcd( a: Int, b: Int ): Int = -1
|
||||
|
||||
|
||||
//Calcule l'aire d'un cercle au quel on aurait enlever le carré inscrit
|
||||
def weirdShapeArea( radius: Double ) = {
|
||||
val r2 = radius*radius
|
||||
val disc = math.Pi * r2
|
||||
val square = 2*r2
|
||||
disc - square
|
||||
}
|
||||
|
||||
//A IMPLEMENTER:
|
||||
//La distance euclidienne entre deux points (x1,y1) et (x2,y2)
|
||||
def distance( x1: Double, y1: Double, x2: Double, y2: Double ) =
|
||||
-1e-1
|
||||
|
||||
|
||||
//A FAIRE
|
||||
//Décommenter les lignes suivantes une à une
|
||||
//Essayer de comprendre l'erreur et de la résoudre
|
||||
//Le résultat final n'a pas d'importance
|
||||
def foobar(): Int = {
|
||||
val x = 2
|
||||
//x = x + 1
|
||||
//if( x == "3" )
|
||||
// println( "Trois: " + x )
|
||||
//else
|
||||
x
|
||||
}
|
||||
|
||||
@main
|
||||
def tp1 = {
|
||||
println( "TP1 (tout doit être à 'true'):" )
|
||||
println( s" Fonction abs: ${abs(-3.1)*sign(-3.1) == -3.1}" )
|
||||
println( s" Fonction fac: ${fac(8) == 40320}" )
|
||||
println( s" Fonction gcd: ${gcd(1071, 462) == 21}" )
|
||||
println( s" Fonction distance (1): ${distance(1,2,1,2) == 0}" )
|
||||
println( s" Fonction distance (2): ${distance(1,2,3,4) == distance(3,4,1,2)}" )
|
||||
println( s" Fonction distance (3): ${distance(1,0,0,1) == math.sqrt(2)}" )
|
||||
}
|
Loading…
Reference in New Issue