Tester un script Kotlin
PROVISOIRE
Kotlin est un langage utilisé notamment dans les applications Android. On peut l'utiliser dans l'environnement de développement Android Studio. Et il est aussi possible de l'utiliser dans une fenêtre terminal dans une première étape de familiarisation, un peu comme pour Python.
Il y a plusieurs étapes à suivre,
https://otfried.org/courses/cs109/project-install.html
1) installer ou vérifier la présence de Java sur la machine, et l'installer si besoin
2) installer le compilateur Kotlin
3) tester des scripts
Taper la commande kotlinc-jvm pour démarrer le REPL Kotlin.
Puis charger le script en tapant :load NomDuFichier.kt
Et si script contient une classe, on la lance en tapant la commande main()
fun main() { print("Entrez votre nom : ") val nom = readLine() println("Bienvenue, $nom !") }
Puis tester d'autres scripts,
fun main() { var somme = 0 repeat(2) { print("Entrez un chiffre : ") val chiffre = readLine()?.toIntOrNull() ?: 0 somme += chiffre } println("La somme des deux chiffres est : $somme") }
class Utilisateur(val nom: String, val age: Int) fun main() { print("Entrez votre nom : ") val nom = readLine() ?: "" print("Entrez votre âge : ") val age = readLine()?.toIntOrNull() ?: 0 val utilisateur = Utilisateur(nom, age) println("Bonjour, ${utilisateur.nom} ! Vous avez ${utilisateur.age} ans.") }
class Calculatrice { fun additionner(nombre1: Int, nombre2: Int): Int { return nombre1 + nombre2 } } fun main() { val calculatrice = Calculatrice() print("Entrez le premier nombre : ") val num1 = readLine()?.toIntOrNull() ?: 0 print("Entrez le deuxième nombre : ") val num2 = readLine()?.toIntOrNull() ?: 0 val resultat = calculatrice.additionner(num1, num2) println("La somme de $num1 et $num2 est : $resultat") }
liste et boucles
fun main() { val nombres = mutableListOf<Int>() for (i in 1..3) { print("Entrez le nombre $i : ") val num = readLine()?.toIntOrNull() ?: 0 nombres.add(num) } val somme = nombres.sum() println("La somme des nombres est : $somme") }
Condition If
fun main() { print("Entrez votre âge : ") val age = readLine()?.toIntOrNull() ?: 0 val message = if (age >= 18) { "Vous êtes majeur." } else { "Vous êtes mineur." } println(message) }
extension de fonctions
fun String.saluer() { println("Bonjour, $this!") } fun main() { print("Entrez votre prénom : ") val prenom = readLine() ?: "" prenom.saluer() }
manipulation de fichiers
import java.io.File fun main() { print("Entrez le chemin du fichier : ") val chemin = readLine() ?: "" val fichier = File(chemin) if (fichier.exists()) { println("Le fichier existe.") } else { println("Le fichier n'existe pas.") } }
travail sur exception
fun main() { try { print("Entrez un nombre : ") val num = readLine()?.toInt() ?: throw NumberFormatException("Entrée invalide") println("Le double de $num est : ${num * 2}") } catch (e: NumberFormatException) { println("Erreur : ${e.message}") } }
liste et tableaux
fun main() { // Exemple avec une liste de noms val listeNoms = mutableListOf("Alice", "Bob", "Charlie") // Afficher la liste initiale println("Liste initiale : $listeNoms") // Ajouter un nouveau nom à la liste listeNoms.add("David") // Afficher la liste mise à jour println("Liste mise à jour : $listeNoms") // Exemple avec un tableau de scores val scores = intArrayOf(90, 85, 95, 88, 92) // Afficher le tableau de scores println("Scores initiaux : ${scores.joinToString(", ")}") // Calculer la moyenne des scores val moyenne = scores.average() // Afficher la moyenne println("Moyenne des scores : $moyenne") }
travailler avec des fichiers
import java.io.File fun lireFichier(nomFichier: String): String { val fichier = File(nomFichier) return if (fichier.exists()) { fichier.readText() } else { "Le fichier n'existe pas." } } fun ecrireFichier(nomFichier: String, contenu: String) { val fichier = File(nomFichier) fichier.writeText(contenu) } fun main() { val nomFichier = "exemple.txt" ecrireFichier(nomFichier, "Contenu du fichier.") val contenuLu = lireFichier(nomFichier) println("Contenu lu : $contenuLu") }
Expression Lambda et Fonctions Anonymes
fun operation(a: Int, b: Int, operation: (Int, Int) -> Int): Int { return operation(a, b) } fun main() { val addition = operation(10, 5) { x, y -> x + y } val multiplication = operation(3, 4) { x, y -> x * y } println("Addition : $addition") println("Multiplication : $multiplication") }
Exploration des fonctions de la bibliothèque standard de Kotlin
fun main() { val liste = listOf(1, 2, 3, 4, 5) // Filtrer les éléments pairs val pairs = liste.filter { it % 2 == 0 } // Doubler chaque élément val doubles = liste.map { it * 2 } // Somme des éléments val somme = liste.sum() // Affichage des résultats println("Liste originale : $liste") println("Éléments pairs : $pairs") println("Éléments doublés : $doubles") println("Somme des éléments : $somme") }
les types Nullable
fun longueurChaine(chaine: String?): Int { return chaine?.length ?: 0 } fun main() { val chaineNonNull: String = "Hello" val chaineNullable: String? = null val longueurNonNull = longueurChaine(chaineNonNull) val longueurNullable = longueurChaine(chaineNullable) println("Longueur de la chaine non null : $longueurNonNull") println("Longueur de la chaine nullable : $longueurNullable") }
Et un exemple qui combine un peu tout ça,
import java.io.File fun division(a: Int, b: Int): Int { return try { a / b } catch (e: ArithmeticException) { println("Erreur de division : ${e.message}") 0 } finally { println("Opération de division terminée") } } fun lireFichier(nomFichier: String): String { val fichier = File(nomFichier) return if (fichier.exists()) { fichier.readText() } else { "Le fichier n'existe pas." } } fun ecrireFichier(nomFichier: String, contenu: String) { val fichier = File(nomFichier) fichier.writeText(contenu) } fun operation(a: Int, b: Int, operation: (Int, Int) -> Int): Int { return operation(a, b) } fun longueurChaine(chaine: String?): Int { return chaine?.length ?: 0 } fun main() { // Gestion d'erreurs val resultatDivision = division(10, 0) println("Résultat de la division : $resultatDivision") // Manipulation de fichiers val nomFichier = "exemple.txt" ecrireFichier(nomFichier, "Contenu du fichier.") val contenuLu = lireFichier(nomFichier) println("Contenu lu du fichier : $contenuLu") // Expression Lambda val addition = operation(10, 5) { x, y -> x + y } println("Addition : $addition") // Bibliothèque standard val liste = listOf(1, 2, 3, 4, 5) val pairs = liste.filter { it % 2 == 0 } println("Éléments pairs : $pairs") // Nullabilité val chaineNonNull: String = "Hello" val chaineNullable: String? = null val longueurNonNull = longueurChaine(chaineNonNull) val longueurNullable = longueurChaine(chaineNullable) println("Longueur de la chaine non null : $longueurNonNull") println("Longueur de la chaine nullable : $longueurNullable") }
Pour aller plus loin, créer une première appli avec Android Studio,pour se familiariser avec l'environnement de développement, https://developer.android.com/codelabs/basic-android-kotlin-compose-first-app?hl=fr#0
Puis se familiariser avec Jetpack, une suite complète de bibliothèques, d'outils et de bonnes pratiques pour le développement d'applications Android, offrant des composants prêts à l'emploi, des modèles d'architecture et des fonctionnalités facilitant la création d'applications https://developer.android.com/jetpack/compose/tutorial?hl=fr