Listing du fichier pmg.php
00001 <?php
00002 # # (gH) -_- pmg.php ; TimeStamp (unix) : 26 Octobre 2016 vers 18:55
00003
00004 include("std.php") ;
00005 debutPage("Problème algorithmique PMG","strict") ;
00006 debutSection() ;
00007
00008 #" =============================================================================
00009
00010 h1("Le problème algorithmique PMG") ;
00011 h1("(".ghbleu("PMG")." = ".ghbleu("P")."etit ".ghbleu("M")."oyen ".ghbleu("G")."rand)") ;
00012
00013 pvide() ;
00014
00015 p() ;
00016 nbsp(20) ;
00017 echo ghVert("gilles.hunault \"at\" univ-angers.fr") ;
00018 finp() ;
00019
00020 pvide() ;
00021
00022 ## =============================================================================
00023
00024 h2("Présentation du problème") ; $que = 0 ;
00025
00026 $a = ghrouge("a") ;
00027 $b = ghrouge("b") ;
00028 $c = ghrouge("c") ;
00029 $d = ghrouge("d") ;
00030 $p = ghrouge("p") ;
00031 $m = ghrouge("m") ;
00032 $g = ghrouge("g") ;
00033 $x = ghrouge("x") ;
00034 $y = ghrouge("y") ;
00035 $SI = ghvert("SI") ;
00036 $SINON = ghvert("SINON") ;
00037
00038 blockquote() ;
00039
00040 p("texte") ;
00041 echo " On dispose de 3 variables d'entrée $a,$b,$c et on veut écrire un algorithme qui met " ;
00042 echo " dans les 3 variables de sortie $p,$g,$m respectivement la plus petite valeur, la " ;
00043 echo " plus grande et celle du milieu. On a ici écrit volontairement $p,$g,$m au lieu de " ;
00044 echo " $p,$m,$g. " ;
00045 finp() ;
00046
00047 finblockquote() ;
00048
00049 # ------------------------------------------------------------------------------
00050
00051 $que++ ; h2("Partie $que.") ;
00052
00053 # ------------------------------------------------------------------------------
00054
00055 blockquote() ;
00056
00057 p("texte") ;
00058 echo " Fournir au moins les ".ghbleu("5")." solutions dirigées suivantes dont la progression pédagogique " ;
00059 echo " est imposée." ;
00060 finp() ;
00061
00062 blockquote() ;
00063
00064 p("texte") ;
00065 echo b(" Solution 1 : ")." on n'utilisera que des structures $SI simples, sans $SINON ni imbrication. Pas de tableau. " ;
00066 finp() ;
00067
00068 p("texte") ;
00069 echo b(" Solution 2 : ")." on pourra utiliser des structures $SI plus complexes avec $SINON et imbrications possibles. " ;
00070 echo " Toujours pas de tableau. " ;
00071 finp() ;
00072
00073 p("texte") ;
00074 echo b(" Solution 3 : ")."aucune structure $SI n'est autorisée, mais on dispose des fonctions de deux " ;
00075 echo " variables ".b("min($x,$y)")." et ".b("max($x,$y)").". Pas de tableau. Attention, c'est difficile pour la valeur " ;
00076 echo " du milieu. " ;
00077 finp() ;
00078
00079 p("texte") ;
00080 echo b(" Solution 4 : ")." on peut utiliser un tableau mais aucune fonction sur tableau n'est prédéfinie. " ;
00081 finp() ;
00082
00083 p("texte") ;
00084 echo b(" Solution 5 : ")." on peut utiliser un tableau et toutes les fonctions possibles et " ;
00085 echo " imaginables sur tableau. " ;
00086 finp() ;
00087
00088 finblockquote() ;
00089 finblockquote() ;
00090
00091 # ------------------------------------------------------------------------------
00092
00093 $que++ ; h2("Partie $que.") ;
00094
00095 # ------------------------------------------------------------------------------
00096
00097 blockquote() ;
00098
00099 p("texte") ;
00100 echo "On veut généraliser le problème. Réfléchir aux questions suivantes :" ;
00101 finp() ;
00102
00103 blockquote() ;
00104
00105 p("texte") ;
00106 echo " - quelle(s) solution(s) seraient les plus adaptées, quitte à les modifier un peu, si on avait " ;
00107 echo " non plus 3 variables $a,$b,$c mais 4 variables $a,$b,$c,$d ? " ;
00108 finp() ;
00109
00110 /*
00111 p("texte") ;
00112 echo " - quelle(s) solution(s) fonctionnent aussi bien avec des chaines de caractères qu'avec des nombres ? " ;
00113 finp() ;
00114 */
00115
00116 p("texte") ;
00117 echo " - quelle est la solution la plus courte à écrire ? la plus lisible ? la plus simple ? la plus rapide ? " ;
00118 finp() ;
00119
00120 div("invisible") ;
00121 pre_fichier("pmg-alg.txt") ;
00122 findiv() ;
00123
00124 p("texte") ;
00125 echo " - dans quels langages de programmation a-t-on une fonction de tri native ? " ;
00126 finp() ;
00127
00128 p("texte") ;
00129 echo " - si on devait utiliser des objets plus compliqués que de simples variables avec des critères " ;
00130 echo " de comparaison multiple, que faudrait changer pour trouver le meilleur objet, le pire, " ;
00131 echo " et l'objet moyen ? " ;
00132 finp() ;
00133
00134 p("texte") ;
00135 echo " - comment se définit la ".em("tendance centrale")." en statistiques ?" ;
00136 echo " et les ".em("multi-centroides pondérés")." en «Big Data» ?" ;
00137 finp() ;
00138
00139 p("texte") ;
00140 echo " - en admettant qu'on dispose d'une \"liste\" de valeurs (\"vraie\" liste, vecteur, tableau, etc.) " ;
00141 echo " est-ce que ce serait simple de trouver en plus des ".em("extrema")." leur nombre d'occurences, " ;
00142 echo " la position de leur première occurence, celle de leur dernière occurence, le tout " ;
00143 echo b("en un seul parcours de la liste")." pour des raisons d'efficacité ?" ;
00144 finp() ;
00145
00146 finblockquote() ;
00147 finblockquote() ;
00148
00149 # ------------------------------------------------------------------------------
00150
00151 h2(ghbleu("Quelques remarques")) ;
00152
00153 # ------------------------------------------------------------------------------
00154
00155 blockquote() ;
00156
00157 p("texte") ;
00158 echo " Pour savoir si on a réussi l'exercice, il faut tester ".ghvert("3!=6")." cas selon les valeurs de $a, $b et $c quand ces " ;
00159 echo " variables sont toutes distinctes deux à deux. Il faut donc avoir au moins " ;
00160 echo " 6 lignes avec $a,$b,$c en entrée et les bons $p,$m,$g en sortie pour pouvoir conclure. " ;
00161 finp() ;
00162
00163 p("texte") ;
00164 echo "Grâce à l'".b("associativité")." des fonctions ".b("min($x,$y)")." et ".b("max($x,$y)").", il est assez facile " ;
00165 echo " de trouver $p et $g dans le cadre de la solution 3." ;
00166 finp() ;
00167
00168 p("texte") ;
00169 echo " Comme le typage ne fait pas partie de l'énoncé, en fait toutes les " ;
00170 echo " solutions doivent s'adresser aussi bien à des chaines de caractères qu'à des " ;
00171 echo " nombres, entiers ou réels ou même à n'importe quelles données, comme des fractions \"symboliques\", pourvu qu'on " ;
00172 echo " ait une relation d'".b("ordre total").". " ;
00173 echo " C'est pourquoi il est important de traiter le problème avec des ".b("valeurs")." $a, $b et $c, " ;
00174 echo " même si l'ordre lexicographique pour les lettres françaises accentuées est " ;
00175 echo em("\"intrinsèquement rébarbatif\"")." et ".em("\"non conceptuel\"").". " ;
00176 finp() ;
00177
00178 p("texte") ;
00179 echo " Un problème pour public plus averti consiste à comparer des programmes d'optimisation avec plusieurs critères " ;
00180 echo " d'évaluation. " ;
00181 finp() ;
00182
00183
00184 p("texte") ;
00185 echo "Parmi les objectifs pédagogiques visés par cet exercice, on peut noter l'entrainement " ;
00186 echo " à l'instruction $SI et à l'imbrication, l'aptitude à établir des critères de choix pour comparer les solutions, " ;
00187 echo " l'introduction de variables ou de structures de données complémentaires pour résoudre le problème comme ici le tableau, " ;
00188 echo " la volonté de généricité de code pour faire abstraction du typage." ;
00189 finp() ;
00190
00191 finblockquote() ;
00192
00193 ## =============================================================================
00194
00195 pvide() ;
00196
00197 p() ;
00198 echo href("montresource.php?nomfic=pmg.php","Code-source PHP de cette page","orange_stim nou")."." ;
00199 finp() ;
00200
00201 finSection() ;
00202 finPage() ;
00203 ?>
Pour ne pas voir les numéros de ligne, ajoutez &nl=non à la suite du nom du fichier.
Retour à la page principale de (gH)