Aller au contenu principal

Intro à Kotlin et environnement de développement

Contenu

  • Application : architecture, exceptions, robustesse et tests automatisés
  • Kotlin comme langage, Android comme plateforme
  • Plan de cours et logistique

Évaluations et date

  • Politique concernant les absences / retards
  • Politique concernant le plagiat

En cours avec le prof (démos)

  1. Utilisation du script d'installation
  2. Créer un repo GitHub privé 3N5-NomDeFamille-Prenom pour mettre vos exercices
  3. Ouvrir l'IDE pour Kotlin (Intellij IDEA)
  4. Premier projet, première classe Kotlin
  5. Point d'arrêt et débogueur
  6. Configuration d'exécution et .idea
  7. Ajouter une librairie avec gradle
  8. Définir une fonction en Kotlin
Contenu pour cette semaine

Video de création d'un projet, avec point d'arrêt et arguments

Recette pour ajouter une librairie Java dans un projet Kotlin en gradle.

À faire pendant la séance
  • Se familiariser avec l'environnement de développement
  • Compléter les exercices de la semaine
  • Commencer le premier travail (création du projet, création de la classe pour l'application, exécution et débogue).
Exercices

Exercice Bonjour Kotlin

Tu dois créer un projet Kotlin nommé BonjourKotlin au format (Build system) gradle dont le nom de package de base (GroupId) est org.nomdefamille en changeant le nom de famille pour le tien.

Crée 2 fichiers Kotlin exécutables (avec un main qui suit la convention Kotlin).
Le premier s'appelle NomDeFamille.kt et affiche "Bonjour [Nom de famille]" à l'exécution.
Le deuxième s'appelle PrenomDuProf.kt et affiche "Salut [Prénom du prof]" à l'exécution.

N'OUBLIE PAS DE FAIRE UN COMMIT DANS TON REPO AVEC L'EXERCICE, PUIS DE FAIRE UN PUSH.

Exercice C# à Kotlin

Dans le même projet, crée un fichier exécutable CsharpAKotlin.kt.
Utilise l'IA de ton choix (ChatGPT, Claude, ...) pour traduire le script C# suivant en Kotlin.
Copie et roule le code dans ton fichier CsharpAKotlin.kt.
Valide que tout fonctionne bien (nom à afficher passé en argument, etc.).
Si ce n'est pas le cas, corrige-le pour que tout fonctionne bien.

using System;

public class Bonjour
{
public static void Main(string[] args)
{
if (args.Length > 0)
{
string nom = args[0];
Afficher(nom);
}
else
{
Console.WriteLine("SVP veuillez fournir un nom!");
}
}

public static void Afficher(string nom)
{
Console.WriteLine("Bonjour " + nom + "!");
}
}

N'OUBLIE PAS DE FAIRE UN COMMIT DANS TON REPO AVEC L'EXERCICE, PUIS DE FAIRE UN PUSH.

Exercice Triangle

Toujours dans le même projet, crée un fichier exécutable Triangle.kt qui reproduit un triangle en prenant sa hauteur par un argument de ligne de commande.

*
**
***
****

Indications

  • Pour transformer une chaîne de caractères en entier, tu peux utiliser une méthode de la classe String.
  • Pour afficher un caractère sans sauter de ligne : print()

N'OUBLIE PAS DE FAIRE UN COMMIT DANS TON REPO AVEC L'EXERCICE PUIS DE FAIRE UN PUSH.

Exercice Triangles

Dans un fichier exécutable Triangles.kt, tu dois produire 5 triangles de suite en utilisant une fonction Kotlin qui:

  • prend la hauteur en paramètre

  • renvoie une String qui contient le triangle

  • Indice : Part de l'exercice précédent

  • Indice 2 : Puisque le triangle devrait se retrouver dans la String qui est retournée par la fonction, il ne devrait y avoir aucuns print dans la fonction.

fun triangle(hauteur : Int) : String {
return "TODO"
}

Utilise des appels à cette fonction dans le main pour afficher 5 triangles de suite. Fait des tests avec des triangles de taille 4, 8, 10 et 100.

N'OUBLIE PAS DE FAIRE UN COMMIT DANS TON REPO AVEC L'EXERCICE PUIS DE FAIRE UN PUSH.

Exercice TraceManuelle

fun main() {
for (i : Int in 1..1) {
for (j : Int in 1..2) {
for (k : String in listOf(" pif", "") ) {
val b = .1 + .1 + .1
val z = (i + j * b / k.length * j).toString() + k
println(z + " " + b)
}
}
}
}

Dans un fichier appelé TraceManuelle.md, tu dois écrire à quoi va ressembler la console à la fin de l'exécution de ce code (sans le rouler).

Finalement, écris ce que vaut b / k.length à chaque itération.

Exercice TraceDebugger

Refaire le même exercice que précédemment, mais en roulant le code et en utilisant le débogueur. Tu dois :

  • placer un point d'arrêt
  • évaluer une expression sur un point d'arrêt pour savoir combien vaut b / k.length à chaque itération

Valide que les valeurs que tu trouves sont les mêmes que celles que tu as écrites dans TraceManuelle.md.

Exercice librairie JSOUP

Tu dois créer un projet Kotlin au format (Build system) gradle dont le nom est DemoJSoup.

Tu dois inclure JSoup dans les dépendances de ton projet dans le build.gradle (indice : regarde la Recette pour savoir comment faire).

Tu dois créer un fichier exécutable appelé SuperDuperDemo.kt.

Dans le main, copie un des exemples que tu trouves sur la page de JSOUP https://jsoup.org/:

  • les exemples sont en Java
  • tu peux essayer de les traduire en Kotlin
  • tu peux demander à ChatGPT de traduire l'exemple en Kotlin
  • tu peux aussi copier le code de l'exemple en Java et le coller dans un fichier .kt dans IntelliJ, il te proposera de traduire pour toi

Démontre la bonne exécution de ton programme.

N'OUBLIE PAS DE FAIRE UN COMMIT DANS TON REPO AVEC L'EXERCICE PUIS DE FAIRE UN PUSH.

Défi de la semaine (optionnel)

Exercice UnUn

Tu dois programmer une méthode en Kotlin qui transforme une String en une autre String:

fun unUn(source: String): String{
TODO()
}

Par exemple, si la source est "111213", on compte le nombre de chiffres identiques

  • source commence par "111" ce qui va donner 3 fois 1, soit "31"
  • "2" va donner 1 fois 2 donc "12"
  • "1" va donner 1 fois 1 donc "11"
  • "3" va donner 1 fois 2 donc "13"

Le résultat de "111213" serait donc "31121113"

Exercice UnUnSequence

Programme une méthode qui affiche une séquence de n String partant du paramètre source.

fun sequence(source: String, longueur: Int): List<String>{
TODO()
}

Par exemple, sequence("1", 6) donne :

1
11
21
1211
111221
312211

Produis des fichiers exécutables pour répondre aux questions suivantes :

  • Quel est le nombre le plus élevé qu'on peut atteindre en partant de "1"? Par exemple, dans les 100 000 premières itérations.
  • Est-ce qu'il peut arriver que le résultat de unUn soit plus court que la source? Si oui, donne un exemple.