France IOI
Cours de programmation en Caml pour débutants
Chapitre 0  Introduction
0.1  Objectifs et méthode
0.2  Qu'est-ce que programmer
0.3  Comment programmer
0.4  Dialoguer avec un programme
0.5  Interface de développement
0.6  Correction automatique
Chapitre 1  let, if, for
1.1  Instructions
1.1.1  Afficher du texte
1.1.2  Afficher des nombres
Affiche 5 a pour carré 25
1.1.3  Erreurs
1.1.4  Déclaration
Valeur, double, et triple de 42
1.2  Interventions
1.2.1  Lecture d'un entier
1.2.2  Exercices
Demande puis affiche un entier
Affiche la somme de deux entiers
1.2.3  Erreurs
1.2.4  Lecture de texte
Demande puis affiche un texte
1.3  Conditions
1.3.1  Le if
1.3.2  Portée
1.3.3  Erreurs
1.3.4  Exercices
Affiche entier égal ou différent de 4
Affiche entiers égaux ou différents
Affiche plus grand de deux entiers
Affiche c'est moi ou quelqu'un d'autre
Affiche c'est moi ou bien rien du tout
1.3.5  Réductions des blocs
1.3.6  Erreurs et exercice
Affiche entiers égaux ou différents, bis
1.3.7  Blocs vides, else implicite
Affiche entier positif ou bien rien
Simplifier un bloc de then vide
1.3.8  Le else if
Affiche si c'est 4, 8 ou autre
Affiche c'est moi ou C'EST MOI
1.4  Répétitions
1.4.1  Répéter un bloc
Affiche N fois bonjour
1.4.2  Itérer un bloc
Affiche les carrés des entiers de 1 à 20
1.4.3  A propos des bornes
Affiche les entiers entre 2 bornes
1.4.4  Descente
Affiche les entiers de 20 à 1 inclus
1.4.5  Erreurs
1.4.6  Exercices
Affiche nb fois un motif donné
Affiche 10 entiers consécutifs à partir de N
1.5  Exercices
1.5.1  Signe d'un entier
Affiche valeur absolue d'un entier
Affiche positif, négatif, ou nul
1.5.2  Minimum de trois nombres
Affiche le plus petit de trois entiers
1.5.3  Compte à rebours
Compte à rebours basique
Compte à rebours parfait
Compte à rebours parfait bis
Compte à rebours parfait ter
1.5.4  Lignes, rectangles et triangles
Affiche une ligne de X
Affiche un rectangle de X
Affiche un triangle de X
1.5.5  Table de multiplication
Affiche une table de multiplication jusqu'à 10
Chapitre 2  float, int, ref
2.1  Réels
2.1.1  Opérations
2.1.2  Erreurs
2.1.3  Exercices
Affiche le carré de la somme de deux réels donnés
2.1.4  Valeur absolue, puissances
Affiche la norme d'un vecteur 3D float
2.1.5  Maximum
Affiche le minimum de trois réels
2.1.6  Erreurs
2.1.7  Autres fonctions
2.2  Entiers
2.2.1  Division entière et modulo
Affiche pair ou impair
2.2.2  Fonctions prédéfinies
2.2.3  Conversions
Affiche le rapport de deux entiers
Affiche les racines carrés successives
2.2.4  Limitation des int
2.3  Références
2.3.1  Problématique
2.3.2  Manipulations
2.3.3  Erreurs
2.3.4  Exercices
Tester les références 1
Tester les références 2
Affiche la somme d'entiers donnés
Affiche la somme des N premiers entiers
Affiche la somme des racines des N premiers entiers
2.3.5  Incrémentation
Affiche le nombre d'entiers donnés supérieurs à 5
2.3.6  Alias et copie
Tester les alias de références 1
Tester les alias de références 2
2.4  Exercices
2.4.1  Moyenne et maximum
Affiche moyenne de scores donnés
Affiche le meilleur des scores donnés
2.4.2  Affichage de nombres impairs
Affiche les nombres impairs entre 21 et 43
Affiche les nombres impairs entre deux entiers donnés
Chapitre 3  function
3.1  Principe des fonctions
3.1.1  Objectif
3.1.2  Modèles des robots
3.1.3  Utilisation
3.2  Fonctions sans retour
3.2.1  Exemple
3.2.2  Exercices
Ecrire la fonction ligne_avec_vingt_fois
Ecrire la fonction ligne_x_de_taille
3.2.3  Fonction avec contexte
3.2.4  Fonction avec lecture
Ecrire la fonction passe_hauteur
3.2.5  Plusieurs paramètres
Ecrire la fonction affiche_rect
Ecrire la fonction affiche_rect_mot
3.2.6  Erreurs
3.2.7  Sans paramètre
Ecrire la fonction affiche_produit
3.3  Fonctions avec retour
3.3.1  Principe
3.3.2  Sans actions
Ecrire la fonction carre
Ecrire la fonction norme_vect_3d
3.3.3  Avec actions
Ecrire la fonction factorielle
Ecrire la fonction recup_somme
3.3.4  Retour avec if
Programme utilisant la fonction maximum
Ecrire la fonction parite
Ecrire la fonction absolue
Ecrire la fonction plus_grand_carre
3.3.5  Erreurs
3.3.6  Résumé
3.4  Typage et notation
3.4.1  Type d'une fonction
3.4.2  Exercices
3.4.3  Polymorphisme
Chapitre 4  array, char, string
4.1  Tableaux
4.1.1  Principe
4.1.2  Création
4.1.3  Lecture
Tester les tableaux - lecture dans : ah, eh, oh
4.1.4  Modification
Tester les tableaux - écriture dans : ah, eh, oh
Ecrire la fonction somme_deux_premiers
4.1.5  Erreurs de compilation
4.1.6  Erreurs d'exécution
4.1.7  Longueur
Ecrire la fonction affiche_tableau_entiers
4.1.8  Résumé
4.1.9  Alias et copie
4.2  Exercices
4.2.1  Tableau des carrés
Fabriquer et afficher le tableau des 30 premiers carrés
Fabriquer le tableau des N premiers carrés
4.2.2  Somme des éléments d'un tableau
Ecrire la fonction somme_tableau_entiers
4.2.3  Lecture d'un tableau
Ecrire la fonction read_int_array
4.2.4  Echange de deux valeurs
Ecrire la fonction echange_cases
4.3  Caractères
4.3.1  Écriture
Afficher un texte en utilisant des backslashs - 1
4.3.2  Manipulations
Afficher quelques caractères avec un print_char
4.3.3  Erreurs
4.4  Chaînes
4.4.1  Manipulations
4.4.2  Erreurs
4.4.3  Exercices
Ecrire la fonction affiche_premiere_et_derniere_lettre
Ecrire la fonction affiche_chaine
Ecrire la fonction coupe_premier_et_dernier
Lire et concaténer trois lignes
Lire et concaténer N lignes
4.4.4  Nombre en chaîne
Ecrire la fonction detail_signe
4.5  Exercices
4.5.1  Symétrisation d'une chaîne
Ecrire la fonction inverse_chaine
4.5.2  Concaténation de tableaux
Ecrire la fonction concatene_tab
Chapitre 5  bool, random
5.1  Valeurs booléennes
5.1.1  Constructions
Ecrire la fonction est_pair
5.1.2  Affichage
Ecrire la fonction print_bool
5.1.3  Lecture
Lire deux booléens et les comparer
5.1.4  Exercices
Simplifier la fonction passe_ou_non
Ecrire la fonction est_performant
5.2  Calcul booléen
5.2.1  ET logique
Ecrire la fonction taille_convenable
Ecrire la fonction est_multiple_trois_et_cinq
5.2.2  OU logique
Lire un prénom et le comparer à moi ou MOI
5.2.3  NON logique
5.2.4  Résumé
5.2.5  Exercices
Ecrire la fonction trois_egaux
Ecrire la fonction ou_exclusif
Ecrire la fonction est_bissextile
5.3  Exercices
5.3.1  Tarifs
Ecrire la fonction tarif_selon_age
5.3.2  Recherche dans un tableau
Ecrire la fonction tableau_contient
5.3.3  Tous positifs dans un tableau
Ecrire la fonction tableau_tous_positifs
5.4  Nombres aléatoires
5.4.1  Génération
5.4.2  Intervalle donné
Afficher un nombre aléatoire entre 4 et 12
Afficher un nombre aléatoire entre -100 et +100
Ecrire la fonction rand_float_entre
5.4.3  Probabilité donnée
Ecrire la fonction random_bool en utilisant Random.int
Ecrire la fonction random_bool en utilisant Random.float
Ecrire la fonction proba_bool
5.4.4  Dessins aléatoires
Ecrire la fonction rectangle_hasard
Chapitre 6  while, rec
6.1  La boucle while
6.1.1  Structure
Ecrire affiche_entiers avec un while
6.1.2  Recherche dans un tableau
Ecrire tableau_contient avec un while
Ecrire tableau_contient optimisé avec un while
6.1.3  Lancés de dé
Programme pour compter le nombre de lancé avant un 6
Fonction pour compter le nombre de lancé avant un 6
6.2  Exercices
6.2.1  Suite de Syracuse
Fonction syracuse
Fonction affiche_syracuse
Fonction etapes_syracuses
6.2.2  Le jeu ``c'est plus, c'est moins''
Programme du jeu c'est plus c'est moins
6.2.3  Course aux dés
Programme course aux dés
6.3  Fonctions récursives
6.3.1  Plans de robots
6.3.2  Définition de récursivif
6.3.3  Coffre fort en récursif
Coffre fort en récursif
Coffre fort avec limite en récursif
Coffre fort avec limite en itératif
6.3.4  Boucles en récursif
6.3.5  Débordement de pile
6.3.6  Récursion infinie
6.4  Exercices
6.4.1  Syracuse en récursive
Fonction affiche_syracuse en récursif
Fonction etapes_syracuses récursive
6.4.2  Descente en ascenseur
Programme descente en ascenseur récursif
Programme descente en ascenseur itératif
6.4.3  Course aux dés en récursif
Programme course aux dés en récursif
6.4.4  ``C'est plus, c'est moins'' en récursif
Programme c'est plus c'est moins en récursif
Chapitre 7  expression
7.1  Introduction
7.1.1  Objectif
7.1.2  Principe
7.2  Fondements
7.2.1  Juxtaposition
7.2.2  Juxtaposition itérée
7.2.3  Bloc d'expression
7.2.4  Déclaration
7.3  Structures
7.3.1  Décision
7.3.2  Calcul booléen
7.3.3  Boucles
7.3.4  Fonctions
7.4  Ordre d'évaluation
7.4.1  Arguments
7.4.2  Fonction récursives
Chapitre 8  Annexe : clavier français
8.1  Le clavier
8.2  Opérateurs
8.3  Séparateurs
8.4  Délimiteurs
8.5  Avancé
Chapitre 9  Annexe : résumés
9.1  Chapitre 0
9.2  Chapitre 1
9.3  Chapitre 2
9.4  Chapitre 3
9.5  Chapitre 4
9.6  Chapitre 5
9.7  Chapitre 6
9.8  Chapitre 7
9.9  Chapitre 8