Exercices sur les fonctions

Sommaire

Index

Procédure afficher caractères

Créer une procédure afficher_n_car permettant d’afficher un certain nombre de fois le caractère choisi.

Paramètres:

Cette fonction sera à réutiliser dans les exercices qui suivent.

Triangle vide

Nom du programme: triangle_vide

Ecrire une procédure qui affiche un triangle rectangle sous forme de chaîne de caractères aligné à droite. Le triangle est représenté avec des points et seuls ses côtés sont affichés. L’angle droit du triangle est en haut à droite.

Le nombre de lignes est saisi par l’utilisateur

Données de test

Pour lignes = 6, l’affichage attendu est :

......
 .   .
  .  .
   . .
    ..
     .

Figures

Programme pyramideNombre

Écrire une procédure qui affiche une pyramide avec des nombres. Le sommet contient un élément (nombre 1). La base contient le nombre de lignes avec le nombre égal à lignes.

Le nombre de lignes est saisi par l’utilisateur

Données de test

Pour lignes = 5:

    1
   2 2
  3 3 3
 4 4 4 4
5 5 5 5 5

losange

Écrire une procédure qui dessine un losange avec des o. Le nombre de lignes indique le nombre de lignes dans la première moitié du losange.

Le nombre de lignes est saisi par l’utilisateur

Données de test

Pour lignes = 5:

    o
   ooo
  ooooo
 ooooooo
ooooooooo
 ooooooo
  ooooo
   ooo
    o

Fonctions textuelles

Nom du dossier dans le dépôt git: fonctions-textuelles

Fonction egales(chaine1, chaine2)

Écrire la fonction egales(chaine1, chaine2) qui vérifie si deux chaînes sont identiques.

En pseudo- JS, pour récupérer un caractère à un indice précis dans la chaîne, on utilise le code suivant (identique aux tableaux):

let chaine = "abcdefg"

AFFICHER(chaine[2])

On définirait donc la fonction caractereA(texte, index) qui renvoie le caractère situé à l’index index de la chaîne texte de la manière suivante:

function caractereA(texte, index){
    return 
}

Nom du fichier à publier: egales.js

Pour vérifier que votre fonction fonctionne correctement, utiliser le code ci-dessous

function egales(ch1, ch2){
  return true
}

/*----NE RIEN MODIFIER CI-DESSOUS------*/
function tester(t){
    let fonction = t.fonction
    let res = t.resultat
    if (fonction() == res){

      AFFICHER("SUCCES  : " + t.nom)
      return 1;
    } else {
      AFFICHER("ECHEC   : " + t.nom)
      return 0;
    }
}

function lance_tests(tests){
  let compteur = 0;
  let reussite = 0;
  for(const t of tests){
    reussite = reussite + tester(t);
    compteur = compteur + 1
  }
  return [reussite, compteur]
}

let res = lance_tests([
  {
    "fonction": function(){ return egales("ab", "cd") },
    "resultat": false,
    "nom":'egales("ab", "cd") renvoie false'
  },
  {
    "fonction": function(){ return egales("abcd", "abcd") },
    "resultat": true,
    "nom":'egales("abcd", "abcd") renvoie true'
  },
  {
    "fonction": function(){ return egales("", "abcd") },
    "resultat": false,
    "nom":'egales("", "abcd") renvoie false'
  },
  {
    "fonction": function(){ return egales("ab", "") },
    "resultat": false,
    "nom":'egales("ab", "") renvoie false'
  },
  {
    "fonction": function(){ return egales("", "") },
    "resultat": true,
    "nom":'egales("", "") renvoie true'
  },
]);

AFFICHER(res[0] + "/" + res[1])

Remplacer le code:

function egales(ch1, ch2){
  return true
}

Par celui de la fonction que vous avez écrite.

Fonction gauche(chaine, n)

Réécrire la fonction qui renvoie les n caractères situés à gauche du texte passé en paramètre.

Code de test: gauche-test-pseudo.js

Nom du fichier à publier: gauche.js

Fonction droite(chaine, n)

Réécrire la fonction qui renvoie les n caractères situés à droite du texte passé en paramètre.

Code de test: droite-test-pseudo.js

Nom du fichier à publier: droite.js

Fonction trouver(chaine, n)

Réécrire la fonction trouver(chaine, souschaine) qui renvoie un nombre correspondant à la position de souschaine dans chaine.

Code de test: trouver-test-pseudo.js

Nom du fichier à publier: trouver.js

Exemples

AFFICHER(trouver("abcdefghi", "fgh"))
AFFICHER(trouver("abcdefghi", "cba"))

Affichera:

5
-1