Wikilivres frwikibooks https://fr.wikibooks.org/wiki/Accueil MediaWiki 1.39.0-wmf.26 first-letter Média Spécial Discussion Utilisateur Discussion utilisateur Wikilivres Discussion Wikilivres Fichier Discussion fichier MediaWiki Discussion MediaWiki Modèle Discussion modèle Aide Discussion aide Catégorie Discussion catégorie Transwiki Discussion Transwiki Wikijunior Discussion Wikijunior TimedText TimedText talk Module Discussion module Gadget Discussion gadget Définition de gadget Discussion définition de gadget Programmation PHP/Introduction 0 2836 684329 683427 2022-08-28T20:09:56Z JackPotte 5426 /* PHP 8 */ wikitext text/x-wiki <noinclude>{{Programmation PHP}}</noinclude> == Historique == <div style="float:right;">[[Image:Server-side websites programming languages.PNG|thumb|Répartition des langages de programmation côté serveur, des sites Internet le 28 avril 2016.]]</div> [[w:PHP|PHP]] est un langage de script créé par Rasmus Lerdorf en 1995. Principalement utilisé pour la programmation Web, on pourrait le situer entre les SSI ([[w:Server Side Includes|Server Side Includes]]) et le langage de script [[Programmation Perl|Perl]]. Il est utilisable sur tous les systèmes d'exploitation, donc sur {{w|Windows}}, {{w|MacOS}}, [[Le système d'exploitation GNU-Linux|GNU-Linux]] ou autre Unix commercial, ce qui en fait un langage très portatif. La sortie de PHP 5 en 2004 a permis au langage d'atteindre une certaine maturité, pour être reconnu comme un serveur d'application à part entière tel que [[Programmation JEE|JEE]] ou [[Programmation .Net|.Net]]. PHP a ensuite acquis une place incontournable dans le développement Web ''Open Source''. Sa popularité vient de sa syntaxe, proche du [[Programmation C|C]], de sa vitesse et de sa simplicité. En 2013, on estime qu'il y a plus de 244 millions de serveurs qui utilisent le langage. En 2016 il est utilisé dans plus de 80 % des sites Internet, et toujours 77,5 % en août 2022<ref>https://w3techs.com/technologies/details/pl-php</ref>. === PHP 5 === Les nouvelles fonctionnalités du PHP 5 concernent surtout la [[programmation orientée objet]]<ref>https://www.web24.com.au/tutorials/features-of-php5</ref> : # interfaces # classes abstraites # constructeurs et destructeurs de classes (ainsi que d'autres méthodes magiques) # portée des attributs et méthodes (public, protected, private) # attributs et {{wt|méthode statique|méthodes statiques}} # attributs et {{wt|méthode finale|méthodes finaux}} # {{wt|type hinting}} de classe. === PHP 7 === Les principales fonctionnalités apportées par PHP 7 (depuis 2015) sont<ref>https://www.php.net/manual/fr/migration70.new-features.php</ref> : # typage strict par classe # paramètres typés # retours de méthode typés # {{wt|opérateur de coalescence null}} (??) # {{wt|opérateur vaisseau spatial}} (<=>) # tableaux de constantes # {{wt|classe anonyme|classes anonymes}} # groupage des déclarations (use, avec des accolades). === PHP 8 === Nouvelles fonctionnalités du PHP 8.0 en 2020<ref>https://kinsta.com/fr/blog/php-8/</ref><ref>https://php.developpez.com/actu/335682/PHP-8-2-est-disponible-en-beta-2-Cette-version-propose-null-true-et-false-en-tant-que-types-autonomes-ainsi-que-des-constantes-dans-les-traits/</ref> : # {{wt|paramètre nommé|paramètres nommés}} # types d'union (X|Y) # propriétés promues (déclarations dans le constructeur) # autorisation d'une virgule de fin dans les paramètres # autorisation des méthodes abstraites dans les traits # autorisation des indices négatifs dans les tableaux autoincrémentés # l'instruction <code>match</code> # {{wt|opérateur null-safe}} (?->) # fonction <code>str_contains()</code> # fonction <code>str_starts_with()</code> et <code>str_ends_with()</code> # fonction <code>get_debug_type()</code> : il s'agit d'un <code>gettype()</code> plus précis, car il renvoie le nom de la classe au lieu de "<code>object</code>" # exécution {{wt|juste-à-temps}} (JIT), pour améliorer les performances : plus de 20 % de requêtes en plus par seconde<ref>https://thecodingmachine.com/php-8-nouveautes-compatibilites-migration/</ref>. ==== 8.1 ==== Pour PHP 8.1 : # types d'intersection (X&Y) # type de retour <code>never</code> # constantes de classe finales # {{wt|énumération}}s # {{wt|fibre}}s (threads virtuels pilotés par la classe ''Fiber'') # fonction array_is_list() # attributs en lecture seule (readonly). ==== 8.2 ==== PHP 8.2 : # classes en lecture seule # types <code>null</code>, <code>true</code> et <code>false</code>. == Sites Web statiques ou dynamiques == À l'origine du Web, les sites Web étaient des sites '''statiques''' : constitués d'un ensemble de pages écrites dans le langage HTML. L'information présente sur ces pages était toujours identique et leur mise à jour était particulièrement fastidieuse. Le serveur Web se contentait de diffuser les pages telles quelles à l'utilisateur. L'interaction entre le site et l'utilisateur était très sommaire : l'utilisateur demandait une page web et le serveur la lui fournissait. Aujourd'hui la plupart des sites sont '''dynamiques''' : à l'intérieur des pages HTML, le concepteur du site a inséré des programmes. Ces programmes permettent une plus grande souplesse dans la gestion du site, sa mise à jour et ses fonctionnalités. La possibilité d'insérer des programmes a permis de décupler les fonctionnalités des sites Web. Pour vous en convaincre prenons quelques exemples : *Vous voulez écrire un site qui présente une centaine de produits. Vous n'allez pas écrire 100 pages différentes, une pour chacun des produits ! Mais plutôt une seule page (page type) permettant de présenter n'importe quel produit. Cette page va contenir un programme qui interagira avec une base de données. Dans la base de données, seront stockées les informations utiles pour chaque produit : le nom du produit, sa présentation, sa référence, son prix, etc. Le programme aura donc pour rôle d'aller chercher l'information utile dans la base de données et de l'afficher en HTML. De plus, pour ajouter un produit, il suffira d'ajouter un élément dans la base de données. Il est même possible d'avoir des programmes permettant de passer une commande pour vos différents produits ! * Vous voulez diffuser rapidement des informations sur Internet : vous voulez avoir un outil convivial qui vous permet d'ajouter un article, de le modifier, de le supprimer... Vous allez donc écrire un programme permettant de modifier à volonté les différents articles. Un exemple bien connu de ce type de programme est le blog : il s'agit d'un programme permettant à n'importe quel utilisateur non informaticien de gérer ses différents articles. * L'encyclopédie Wikipédia est réalisée avec un programme (en PHP d'ailleurs) qui permet à chaque utilisateur de créer et de modifier les articles tout en gardant un historique complet des différentes versions des articles. * les forums de discussion sont des lieux d'échange permettant une interaction étroite entre le serveur et l'utilisateur. Grâce aux programmes qu'ils utilisent, il est possible de se connecter, de consulter les messages des différents forums, d'y répondre. Les modérateurs de ces forums peuvent modifier les messages, les supprimer, interdire un utilisateur indélicat. Dans chacun des exemples précédents il a été nécessaire d'incorporer un programme à l'intérieur des pages du site afin de réaliser des fonctionnalités de haut niveau. Aujourd'hui la quasi-totalité des sites professionnels sont dynamiques et il est quasi inconcevable de réaliser un site statique. Le langage PHP est un des langages utilisables pour réaliser facilement les sites Web dynamiques, ne serait-ce que parce qu'il est disponible sur la plupart des serveurs hébergeant des sites. == Possibilités == Si vous êtes déjà allés sur un site qui vous demandait de vous connecter, vous avez utilisé un script côté serveur. Ce script était certainement écrit en PHP, en raison de la popularité de ce dernier. PHP transforme une page statique (fichier [[Programmation HTML|HTML]] par exemple), en une suite d'instructions interprétables par PHP, installée sur un serveur Web comme [[Apache]] - ça peut-être simplement un "Hello World" 50 fois dans une colonne, ou une interaction avec un système de base de données, comme [[MySQL]], fréquemment couplé à PHP. Mais PHP peut aussi servir à programmer des batchs sans page web aucune. Les premières versions de PHP étaient faiblement typées, mais depuis la version 7 il est possible de forcer un typage fort dans un fichier en lui ajoutant : <syntaxhighlight lang=php> declare(strict_types = 1); </syntaxhighlight> 6n62hcdysh1d1wdbjzrwyvpp1xedeis Programmation GTK/Bien débuter 0 3352 684325 672080 2022-08-28T12:16:20Z DavidL 1746 wikitext text/x-wiki {{GTK}} == Installation == La première chose à faire est, bien sûr, de récupérer les sources de GTK+ et de les installer. Vous pouvez en obtenir la dernière version : # [[Linux]] sur ftp://ftp.gnome.org/pub/gnome/sources/gtk+/. GTK+ utilise autoconf de GNU pour se configurer. Lorsque vous aurez décompressé l'archive TAR, tapez ./configure --help pour consulter la liste des options. # [[Windows]] sur http://sourceforge.net/userapps/mediawiki/alex-sh/index.php?title=Downloads. D'autres sources d'informations se trouvent sur http://www.gtk.org/. == Premier programme == Pour commencer notre introduction à GTK+, nous débuterons avec le programme le plus simple qui soit. Celui-ci créera une fenêtre de 200x200 pixels et ne pourra se terminer qu'en le tuant à partir du shell. <syntaxhighlight lang="C"> #include <gtk/gtk.h> int main (int argc, char *argv[]) { GtkWidget *window; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_show (window); gtk_main (); return 0; } </syntaxhighlight> Vous pouvez compiler le programme ci-dessus à l'aide de la commande : gcc base.c -o base `pkg-config --cflags --libs gtk+-2.0` {{Attention|Il s'agit bien du caractère ` et non pas '.}} Les explications concernant les options inhabituelles de compilation seront abordées dans [[../Compilation de Bonjour tout le monde/]]. Tous les programmes incluront évidemment le fichier gtk/gtk.h qui déclare les variables, fonctions, structures, etc. qui seront utilisées par votre application GTK. La ligne : <syntaxhighlight lang="C"> gtk_init (&argc, &argv); </syntaxhighlight> appelle la fonction gtk_init(gint *argc, gchar ***argv) qui sera appelée dans toutes les applications GTK+. Cette fonction configure certaines choses pour nous, comme l'aspect visuel et les couleurs par défaut, puis appelle gdk_init(gint *argc, gchar ***argv). Cette dernière initialise la bibliothèque pour qu'elle puisse être utilisée, configure les gestionnaires de signaux par défaut et vérifie les paramètres passés à notre application via la ligne de commande en recherchant l'un des suivants : * --display * --debug-level * --no-xshm * --sync * --show-events * --no-show-events Elle les supprime alors de la liste des paramètres, en laissant tout ce qu'elle ne reconnaît pas pour que notre application l'analyse ou l'ignore. Ceci crée un ensemble de paramètres standards acceptés par toutes les applications GTK+. Les deux lignes de code suivantes créent et affichent une fenêtre. <syntaxhighlight lang="C"> window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_show (window); </syntaxhighlight> Le paramètre GTK_WINDOW_TOPLEVEL précise que l'on veut que la fenêtre créée suive l'aspect et le placement définis par le gestionnaire de fenêtres. Plutôt que de créer une fenêtre de 0x0, une fenêtre sans fenêtre fille est de 200x200 par défaut : on peut ainsi la manipuler facilement. La fonction gtk_widget_show() informe GTK que l'on a configuré le widget et qu'il peut l'afficher. La ligne suivante lance la boucle principale de traitement de GTK. <syntaxhighlight lang="C"> gtk_main (); </syntaxhighlight> gtk_main() est un autre appel que vous verrez dans toute application GTK. Lorsque le contrôle atteint ce point, GTK+ se met en attente d'événements X (clic sur un bouton, ou appui d'une touche, par exemple), de délais écoulés (timeouts) ou d'entrées-sorties fichier. Dans notre exemple simple, cependant, les événements sont ignorés. rmxzsnqc5qfc1o8w9tzhgl7ti3f3fhf Exercices en langage C/Tableaux statiques 0 7372 684327 635639 2022-08-28T13:35:02Z DavidL 1746 wikitext text/x-wiki {{Exercices en langage C}} == Parcours d'un tableau == Écrire un programme nommé argv.c qui affiche : * son nom de lancement (argv[0]); * le nombre des ces arguments; * la valeur de chaque argument reçu. '''Rappels''' : La fonction main d'un programme C reçoit en argument : * un entier '''argc''' indiquant le nombre d'élément du tableau argv; * un tableau de chaînes de caractère '''argv''' avec : ** argv[0] : Nom d'appel du programme. ** argv[i] : Valeur de l'argument de rang i. {|style="width:70%;" |{{Boîte déroulante|titre=Solution|contenu = Le fichier source en c99 : <syntaxhighlight lang="c"> /* Nom : argv.c Auteur : Thierry46 Rôle : Affiche le nom de lancement du programme le nombre et les valeurs des paramètres passés passés à ce programme. Paramètres : - argc : nombre de paramètres - argv : tableau de chaînes de caractère contenant les paramètres Code retour : 0 (EXIT_SUCCESS) Pour produire un exécutable avec le compilateur libre GCC : gcc -Wall -std=c99 -o argv.exe argv.c Pour exécuter, tapez : ./argv.exe Version : 1.0 du 16/1/2008 Licence : GNU GPL */ #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { // Affiche le nom de lancement du programme (void)printf("Nom d'appel du programme (argv[0]) : %s\n", argv[0]); // Affiche le nombre de paramètres passés au programme (void)printf("Nombre de paramètres passés au programme : %d\n", argc-1); // Affiche la valeur des paramètres for (int i=1; i<argc; i++) { (void)printf("Paramètre %d : %s\n", i, argv[i]); } return EXIT_SUCCESS; } // int main(... </syntaxhighlight> <pre> MacMini-TM:~/Documents/developpement/c thierry$ gcc -Wall -std=c99 -o argv.exe argv.c MacMini-TM:~/Documents/developpement/c thierry$ ./argv.exe dudule 1 Nom d'appel du programme (argv[0]) : ./argv.exe Nombre de paramètres passés au programme : 2 Paramètre 1 : dudule Paramètre 2 : 1 </pre> }} |} == Position d'un élément dans un tableau == Écrire un programme ''position.c'' contenant une fonction principale ''main'' déterminant si un entier est contenu dans un tableau statique par l'appel à une fonction ''position''. La fonction main : * définira et initialisera le tableau d'entier * récupérera dans son tableau d'argument argv le nombre à chercher. * appellera la fonction ''position''. * affichera l'indice de l'élément dans le tableau ou un message indiquant que le nombre n'a pas été trouvé. La fonction ''position'' : * aura pour prototype : <code>static int position(int t[], int taille, int x)</code>. * donnera l'indice d'un élément x dans le tableau t, ou -1 si x n'est pas trouvé. {|style="width:70%;" |{{Boîte déroulante|titre=Solution|contenu = Le fichier source en C99 : <syntaxhighlight lang="c"> /* Nom : position.c Rôle : Affiche le nom de lancement du programme le nombre et les valeurs des paramètres passés passés à ce programme. Paramètres : - argc : nombre de paramètres - argv : tableau de chaînes de caractères contenant les paramètres Code retour : 0 (EXIT_SUCCESS) Pour produire un exécutable avec le compilateur libre GCC : gcc -Wall -std=c99 -o position.exe position.c Pour exécuter, tapez : ./position.exe Version : 1.0 du 16/1/2008 Licence : GNU GPL */ #include <stdio.h> #include <stdlib.h> static int position(int t[], int taille, int x); int main(int argc, char *argv[]) { int tableau[] = { 2, 5, 45, 3, 9 }; int taille; int x = 0; int cr = 0; int resultat; // Détermination de la taille du tableau taille = (int)(sizeof(tableau)/sizeof(tableau[0])); // Contrôle nombre de paramètre et affiche usage if (argc != 2) { (void)fprintf(stderr, "%s : Cherche un entier x passe en paramètre\n" "usage : %s x\n", argv[0], argv[0]); (void)fputs("Valeurs contenues dans le tableau : ", stderr); for (int i=0; i<taille; i++) { (void)fprintf(stderr, "%d ", tableau[i]); } (void)fputs("\n",stderr); exit(EXIT_FAILURE); } // if (argc != 2) // Récupère le nombre passé en paramètre et le convertit cr = sscanf(argv[1], "%d", &x); if (cr != 1) { (void)fprintf(stderr, "Erreur : parametre \"%s\" invalide : doit etre un entier.\n", argv[1]); exit(EXIT_FAILURE); } // if (cr != 1) // Appel de la fonction position et affichage du résultat. resultat = position(tableau, taille, x); if (resultat != -1) { (void)printf("La position de %d est : %d\n", x, resultat); } else { (void)printf("%d non trouve !\n", x); } return EXIT_SUCCESS; } /* Fonction ...... : position Rôle .......... : Retourne la position de l'entier x dans la tableau t Paramètres .... : - t : tableau d'entiers passé en entier. - taille : nombre d’éléments du tableau - x : valeur a rechercher. Retour : L'indice dans le tableau de l'élément x ou -1 si non trouve. */ static int position(int t[], int taille, int x) { // On commence la recherche à partir de la fin du tableau int indice = taille - 1; while ((indice >= 0) && (t[indice] != x)) { indice--; } return indice; } // static int position(... </syntaxhighlight> <pre> MacMini-TM:~/c thierry$ gcc -Wall -std=c99 -o position.exe position.c MacMini-TM:~/c thierry$ ./position.exe ./position.exe : Cherche un entier x passe en paramètre usage : ./position.exe x Valeurs contenues dans le tableau : 2 5 45 3 9 MacMini-TM:~/c thierry$ ./position.exe a Erreur : parametre "a" invalide : doit etre un entier. MacMini-TM:~/c thierry$ ./position.exe 5 La position de 5 est : 1 MacMini-TM:~/c thierry$ ./position.exe 99 99 non trouve ! </pre> }} |} 7c7bstsf2yb4mlu3gmf2wj8yuimrl7z Exercices en langage C/Pointeurs 0 19917 684326 671876 2022-08-28T12:17:05Z DavidL 1746 wikitext text/x-wiki {{Exercices en langage C}} Soit un texte donné par une chaîne de caractères. Le but est de compter le nombre d'occurrences de chaque lettre sans distinction entre minuscules et majuscules. == Exercice 1 == === Question 1 === Déclarer le texte comme un tableau statique initialisé par une chaîne de caractères constante, un tableau d'entiers statique pour compter les occurrences dont la taille est fixée par une constante et un pointeur pour parcourir le texte. {|style="width:70%;" |{{Boîte déroulante|titre=Solution|contenu = <syntaxhighlight lang="C"> #include <stdio.h> #include <stdlib.h> const int nb_lettres = 26; int main(void) { /* déclaration d'une chaîne <=> tableau de caractères. */ char ch[]="ceci est une chaîne de test"; printf("Chaîne en mémoire : %s\n",ch); /* déclaration d'un pointeur sur une chaîne de caractères. */ char *p = ch; /* déclaration d'un tableau de 26 cases correspondant aux lettres de l'alphabet, contenant les occurrences des lettres trouvées dans la chaîne.*/ int occ[nb_lettres]; } </syntaxhighlight> }} |} === Question 2 === Initialiser le vecteur d'entiers avec un parcours par indice. {{Boîte déroulante|titre=Solution|contenu = <syntaxhighlight lang="C"> /* initialisation du tableau des occurrences à 0. */ int i=0; for (i=0; i<nb_lettres;++i) occ[i]=0; </syntaxhighlight> }} === Question 3 === Compter les occurrences en utilisant la conversion entre le type char et le type int (la conversion d'un caractère donne son code dans le standard américain). {{Boîte déroulante|titre=Solution|contenu = <syntaxhighlight lang="C"> /* parcours de la chaîne. Caractère de fin d'une chaîne en C : '\0'. */ while (*p != '\0') { if (*p >= 'a' && *p <= 'z') { ++occ[*p-'a']; } else if (*p >= 'A' && *p <= 'Z') { ++occ[*p-'A']; } /* incrémentation du pointeur <=> passage à la lettre suivante. */ ++p; } </syntaxhighlight> }} === Question 4 === Afficher le résultat sur la sortie standard. {{Boîte déroulante|titre=Solution|contenu = <syntaxhighlight lang="C"> for (i=0; i<nb_lettres; ++i) { printf("Nombre de %c : %i\n", 'a'+i, /* le transtypage est automatique : 'a'+i renvoie un entier. */ occ[i]); } return 0; } </syntaxhighlight> }} == Exercice 2 == === Pointeurs et références === Donner et expliquer le résultat de l'exécution du programme suivant : <syntaxhighlight lang="C"> #include <stdio.h> #define taille_max 5 void parcours(int *tab) { int *q=tab; do { printf("%d:%d\n", q-tab, *q-*tab); } while (++q-tab < taille_max); } void bizarre(int **copie, int *source) { *copie=source; } int main(void) { int chose[taille_max] = {1,3,2,4,5}, *truc; printf("chose : \n"); parcours(chose); bizarre(&truc, chose); printf("truc : \n"); parcours(truc); return 0; } </syntaxhighlight> [[Catégorie:Exercices en langage C (livre)|Pointeurs]] 6idp6l7vhcgoul4f40deqw02v58nn11 Programmation JavaScript/Programmer en deux minutes/Compteur en temps réel 0 33493 684323 635321 2022-08-28T12:11:47Z DavidL 1746 Révision de l'exemple : formatage + traduction + sans la mauvaise pratique du retour par variable globale wikitext text/x-wiki <noinclude>{{JS}}[[Catégorie:Programmer en deux minutes (livre)|J]]</noinclude> Document HTML : <syntaxhighlight lang=html4strict> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="fr"> <head> </head> <body> <div id="compteur"></div> <script type="text/javascript"> /* Copier-coller le javascript ici, * ou créez un fichier *.js et déclarez-le dans ce document html. */ </script> </body> </html> </syntaxhighlight> Le JavaScript peut sembler long mais est très simple : il exécute la fonction RunWarCost() qui se ré-exécute toutes les 100 millisecondes (<code>window.setTimeout()</code>). Au passage cette fonction calcule le prix et l'affiche dans la division "compteur" du document. (<code>document.getElementById().innerHTML</code>) :Si vous êtes un utilisateur enregistré de Wikipédia, vous pouvez personnaliser votre JavaScript pour ajouter à votre interface plein de choses, dont bien sûr ce compteur. (voir [[w:Discussion utilisateur:Al Maghi/Gadget-WarCost.js|Gadget-WarCost.js]]) <syntaxhighlight lang="javascript"> //////////////////////Start CUSTOMIZATION////////////////////// //// Le budget affiché : //var Gadget_WarCost_WhichWar="US in Afghanistan since 2001"; //var Gadget_WarCost_WhichWar="US in Iraq since 2003"; //var Gadget_WarCost_WhichWar="US in Wars since 2001"; var Gadget_WarCost_WhichWar="French military budget since 2009"; //// Données : var totalIraq = 687000000000; // total dollars allocated to Iraq War. var startOfIraqWar = new Date("Mar 20, 2003"); // start of Iraq War. var IraqBudgetedThrough = new Date("Sept 30, 2009"); // current budget goes to var totalAg = 228000000000; // total dollars allocated to Afghanistan War. var startOfAgWar = new Date("Oct 7, 2001"); // start of Afghanistan War. var AgBudgetedThrough = new Date("Sept 30, 2009"); // current budget goes to var totalFM=186000000000; //budget militaire français 2009 - 2014 var startOfFM=new Date("Jan 1, 2009"); var FMBudgetedThrough=new Date("Dec 31, 2014"); var separator = "'"; /////////////////End CUSTOMIZATION///////////////// RunWarCost(); ////// Exécute la fonction principale. // function RunWarCost() { var WarCostmoney = "$"; var OutNumberWarCost = 0; // Regarde quelles données afficher. if (Gadget_WarCost_WhichWar == "US in Wars since 2001") { OutNumberWarCost = calculateTotal(); } else if (Gadget_WarCost_WhichWar == "US in Iraq since 2003") { OutNumberWarCost = calculateIraq(); } else if (Gadget_WarCost_WhichWar =="US in Afghanistan since 2001") { OutNumberWarCost = calculateAg(); } else if (Gadget_WarCost_WhichWar =="French military budget since 2009") { OutNumberWarCost = calculateFrenchMilitary(); WarCostmoney = " €"; } else alert("The value of parameter Gadget_WarCost_WhichWar is wrong."); var OutTextCostOfWar = number_str(OutNumberWarCost); // Formatage du nombre if (WarCostmoney=="$") OutTextCostOfWar = WarCostmoney + OutTextCostOfWar; // Symbole monétaire avant else OutTextCostOfWar = OutTextCostOfWar + WarCostmoney; // Symbole monétaire après var compteur = document.getElementById("compteur"); compteur.innerHTML= "Votre compteur : " + OutTextCostOfWar + " = " + Gadget_WarCost_WhichWar; // Affiche la chaîne de caractère window.setTimeout(RunWarCost, 1000); ////// Ré-exécute la fonction principale dans 1 seconde. } function calculateFrenchMilitary() { calculateWarCost(startOfFM, FMBudgetedThrough, totalFM); costOfFrenchMilitary=costOfWarAmount; } function calculateIraq() { return calculateWarCost(startOfIraqWar, IraqBudgetedThrough, totalIraq); costOfIraq=costOfWarAmount; } function calculateAg() { return calculateWarCost(startOfAgWar, AgBudgetedThrough, totalAg); costOfAg=costOfWarAmount; } function calculateTotal() { return calculateAg() + calculateIraq(); } function calculateWarCost(startOfWar, BudgetedThrough, totalMoney) { var totalMS = BudgetedThrough - startOfWar; // Durée du budget en millisecondes var ratePerMS = totalMoney / totalMS; // Budget par milliseconde var curDate = new Date(); // Date courante var diff = curDate - startOfWar; // Millisecondes depuis le début de la guerre return diff * ratePerMS; // Coût de la guerre jusqu'à maintenant } function number_str(n) { var x = n.toString(); var dot = x.lastIndexOf('.'); x = x.substr(0,dot); var l = x.length; var res = ""; for(l-=3 ; l>0 ; l-=3) res = separator+x.substr(l,3) + res; res = x.substr(0,l+3) + res; return res; } </syntaxhighlight> agstks6tesxhwcp09ze692yl54tbjuc 684324 684323 2022-08-28T12:13:07Z DavidL 1746 sans wikitext text/x-wiki <noinclude>{{JS}}[[Catégorie:Programmer en deux minutes (livre)|J]]</noinclude> Document HTML : <syntaxhighlight lang=html4strict> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="fr"> <head> </head> <body> <div id="compteur"></div> <script type="text/javascript"> /* Copier-coller le javascript ici, * ou créez un fichier *.js et déclarez-le dans ce document html. */ </script> </body> </html> </syntaxhighlight> Le JavaScript peut sembler long mais est très simple : il exécute la fonction RunWarCost() qui se ré-exécute toutes les 100 millisecondes (<code>window.setTimeout()</code>). Au passage cette fonction calcule le prix et l'affiche dans la division "compteur" du document. (<code>document.getElementById().innerHTML</code>) :Si vous êtes un utilisateur enregistré de Wikipédia, vous pouvez personnaliser votre JavaScript pour ajouter à votre interface plein de choses, dont bien sûr ce compteur. (voir [[w:Discussion utilisateur:Al Maghi/Gadget-WarCost.js|Gadget-WarCost.js]]) <syntaxhighlight lang="javascript"> //////////////////////Start CUSTOMIZATION////////////////////// //// Le budget affiché : //var Gadget_WarCost_WhichWar="US in Afghanistan since 2001"; //var Gadget_WarCost_WhichWar="US in Iraq since 2003"; //var Gadget_WarCost_WhichWar="US in Wars since 2001"; var Gadget_WarCost_WhichWar="French military budget since 2009"; //// Données : var totalIraq = 687000000000; // total dollars allocated to Iraq War. var startOfIraqWar = new Date("Mar 20, 2003"); // start of Iraq War. var IraqBudgetedThrough = new Date("Sept 30, 2009"); // current budget goes to var totalAg = 228000000000; // total dollars allocated to Afghanistan War. var startOfAgWar = new Date("Oct 7, 2001"); // start of Afghanistan War. var AgBudgetedThrough = new Date("Sept 30, 2009"); // current budget goes to var totalFM=186000000000; //budget militaire français 2009 - 2014 var startOfFM=new Date("Jan 1, 2009"); var FMBudgetedThrough=new Date("Dec 31, 2014"); var separator = "'"; /////////////////End CUSTOMIZATION///////////////// RunWarCost(); ////// Exécute la fonction principale. // function RunWarCost() { var WarCostmoney = "$"; var OutNumberWarCost = 0; // Regarde quelles données afficher. if (Gadget_WarCost_WhichWar == "US in Wars since 2001") { OutNumberWarCost = calculateTotal(); } else if (Gadget_WarCost_WhichWar == "US in Iraq since 2003") { OutNumberWarCost = calculateIraq(); } else if (Gadget_WarCost_WhichWar =="US in Afghanistan since 2001") { OutNumberWarCost = calculateAg(); } else if (Gadget_WarCost_WhichWar =="French military budget since 2009") { OutNumberWarCost = calculateFrenchMilitary(); WarCostmoney = " €"; } else alert("The value of parameter Gadget_WarCost_WhichWar is wrong."); var OutTextCostOfWar = number_str(OutNumberWarCost); // Formatage du nombre if (WarCostmoney=="$") OutTextCostOfWar = WarCostmoney + OutTextCostOfWar; // Symbole monétaire avant else OutTextCostOfWar = OutTextCostOfWar + WarCostmoney; // Symbole monétaire après var compteur = document.getElementById("compteur"); compteur.innerHTML= "Votre compteur : " + OutTextCostOfWar + " = " + Gadget_WarCost_WhichWar; // Affiche la chaîne de caractère window.setTimeout(RunWarCost, 1000); ////// Ré-exécute la fonction principale dans 1 seconde. } function calculateFrenchMilitary() { return calculateWarCost(startOfFM, FMBudgetedThrough, totalFM); } function calculateIraq() { return calculateWarCost(startOfIraqWar, IraqBudgetedThrough, totalIraq); } function calculateAg() { return calculateWarCost(startOfAgWar, AgBudgetedThrough, totalAg); } function calculateTotal() { return calculateAg() + calculateIraq(); } function calculateWarCost(startOfWar, BudgetedThrough, totalMoney) { var totalMS = BudgetedThrough - startOfWar; // Durée du budget en millisecondes var ratePerMS = totalMoney / totalMS; // Budget par milliseconde var curDate = new Date(); // Date courante var diff = curDate - startOfWar; // Millisecondes depuis le début de la guerre return diff * ratePerMS; // Coût de la guerre jusqu'à maintenant } function number_str(n) { var x = n.toString(); var dot = x.lastIndexOf('.'); x = x.substr(0,dot); var l = x.length; var res = ""; for(l-=3 ; l>0 ; l-=3) res = separator+x.substr(l,3) + res; res = x.substr(0,l+3) + res; return res; } </syntaxhighlight> 3mlznfjb05wx74fgcig4j4fm9ikztta Photographie/Personnalités/R/Traug God Otto Maximilian Renard 0 74047 684334 629324 2022-08-29T09:50:51Z Kazimier Lachnovič 102520 for moving the file wikitext text/x-wiki {{Ph s Personnalités}} == Biographie == '''Traug God Otto Maximilian Renard''' ou '''Otto Renard''' (Kiel, 3 novembre 1855 - Bremerhaven, 27 juin 1943) était un photographe de cour allemand récompensé par le tsar Nicolas II. Il a dirigé un studio à Moscou pendant près de deux décennies. Une succursale était située en Crimée, sur la Mer Noire. Plus tard, Otto Renard rentra en Allemagne, fonda un studio à Düsseldorf dans la Schadowstraße, reprit un studio à Aix-la-Chapelle sur la Friedrich-Wilhelm-Platz 4 vers 1907, et devint un homme riche grâce à ses propres inventions (production d'un papier photographique). Toujours agité, il déménagea sa résidence à Berlin, puis à Darmstadt, toujours avec son propre studio. À l'âge de 70 ans, Otto suivit longtemps ses fils en Amérique du Sud, dirigea un studio à Meran, jusqu'à son retour à Bremerhaven, où il travailla jusqu'à sa mort. == Publications == == Galerie de photographies == <gallery widths="240px" heights="240px"> Gardiner Green Hubbard, head-and-shoulders portrait, full face LCCN2010645713.jpg Gardiner Green Hubbard, head-and-shoulders portrait, full face LCCN2010645713.tif Gardiner Greene Hubbard, LCCN2010645713 (cropped).jpg Kate Marsden (1892).jpg Kate Marsden.jpg Kunstpalast, der Treppenaufgang im nördlichen Risalit, Foto Otto Renard, 1902.jpg Kunstpalast, Einblick in die Kuppel, Foto Otto Renard, 1902.jpg Kunstpalast, Eingangsbereich, Foto Otto Renard, 1902.jpg Kunstpalast, Grosser Saal, Foto Otto Renard, 1902.jpg Kunstpalast, Grosser Saal. Apsis, Foto Otto Renard, 1902.jpg Kunstpalast, Innenhof im Kunstpalast, Foto Otto Renard, 1902.jpg Kunstpalast, Raum 1 Düsseldorf, Foto Otto Renard, 1902.jpg Kunstpalast, Raum 12 Dresden, Foto Otto Renard, 1902.jpg Kunstpalast, Raum 19 Künstlerbund Hagen Wien, Foto Otto Renard, 1902.jpg Kunstpalast, Raum 19a Künstlerbund Hagen Wien, Foto Otto Renard, 1902.jpg Kunstpalast, Raum 2 Düsseldorf, Foto Otto Renard, 1902.jpg Kunstpalast, Raum 20 Erfrischungsraum Secession-Wien, Foto Otto Renard, 1902.jpg Kunstpalast, Raum 20a Secession Wien, Foto Otto Renard, 1902.jpg Kunstpalast, Raum 21 Kunstgenossenschaft Wien, Foto Otto Renard, 1902.jpg Kunstpalast, Raum 22 Secession Berlin, Foto Otto Renard, 1902.jpg Kunstpalast, Raum 3 Düsseldorf, Foto Otto Renard, 1902.jpg Kunstpalast, Raum 4 Düsseldorf, Foto Otto Renard, 1902.jpg Kunstpalast, Raum 42 Luitpoldgruppe München, Foto Otto Renard, 1902.jpg Kunstpalast, Raum 5a Ausstellung altjapanischer Kunst, Georg Oeder, Foto Otto Renard, 1902.jpg Kunstpalast, Raum 6 Henry Van de Velde Zimmer, Foto Otto Renard, 1902.jpg Kunstpalast, Raum 7 Düsseldorf, Foto Otto Renard, 1902.jpg Kunstpalast, Raum 8 Düsseldorf, Foto Otto Renard, 1902.jpg Kunstpalast, Raum 9 Düsseldorf, Foto Otto Renard, 1902.jpg Kunstpalast, Raum ? Düsseldorf, Foto Otto Renard, 1902.jpg Kunstpalast, Raum Kunstgenossenschaft Berlin, Foto Otto Renard, 1902.jpg Kunstpalast, Raum Kunstgenossenschaft München, Foto Otto Renard, 1902.jpg Kunstpalast, Raum Kunstverein für die Rheinlande und Westfalen, Foto Otto Renard, 1902.jpg Kunstpalast, Raum Secession München, Foto Otto Renard, 1902.jpg Kunstpalast, Räume Kunsthistorische Ausstellung 0, Foto Otto Renard, 1902.jpg Kunstpalast, Räume Kunsthistorische Ausstellung 1, Foto Otto Renard, 1902.jpg Kunstpalast, Räume Kunsthistorische Ausstellung 2, Foto Otto Renard, 1902.jpg Kunstpalast, Räume Kunsthistorische Ausstellung 3, Foto Otto Renard, 1902.jpg Kunstpalast, Räume Kunsthistorische Ausstellung 4, Foto Otto Renard, 1902.jpg Kunstpalast, Räume Kunsthistorische Ausstellung 5, Foto Otto Renard, 1902.jpg Richard Brend’amour, Foto Otto Renard, 1911.jpg Siebiež, Čyhunačnaja. Себеж, Чыгуначная (O. Renar, 1909).tiff Tigva church. Details of the southern wall. Uvarova 1894.jpg Tigva church. Interior. Uvarova 1894.jpg Tigva church. Northern view. Uvarova 1894.jpg Tigva church. Southern view. Uvarova 1894.jpg Tsebelda iconostasis.jpg Yekaterina Andreyeva-Balmont.jpg </gallery> == Bibliographie == {{Ph Personnalités}} {{DEFAULTSORT:Renard, Traug God Otto Maximilian}} [[Catégorie:Personnalités de la photographie]] ao5qw8m3jnqzi2eti6ngy8o8yhzeu40 Mathc initiation/Fichiers h : c18 0 76093 684331 683177 2022-08-29T08:15:37Z Xhungab 23827 modification mineure wikitext text/x-wiki __NOTOC__ [[Catégorie:Mathc initiation (livre)]] : [[Mathc initiation/a79| Sommaire]] : ----{{Partie{{{type|}}}|La bibliothèque pour tester les propriétés de la méthode de Horner|fond={{{fond|}}<nowiki>}</nowiki>}} : En mathématiques et algorithmique, la méthode de Ruffini-Horner, connue aussi sous les noms de méthode de Horner, algorithme de Ruffini-Horner ou règle de Ruffini, se décline sur plusieurs niveaux. Elle permet de calculer la valeur d'un polynôme en x0. Elle présente un algorithme simple effectuant la division euclidienne d'un polynôme par X - x0. Mais elle offre aussi une méthode de changement de variable X= x0 + Y dans un polynôme. C'est sous cette forme qu'elle est utilisée pour déterminer une valeur approchée d'une racine d'un polynôme. [https://fr.wikipedia.org/wiki/M%C3%A9thode_de_Ruffini-Horner wikipedia] : <br> Je vous conseille de commencer par étudier ces exemples : : * [[Mathc initiation/Fichiers h : x_18a0|P(x) = 4 x**3 - 7 x**2 + 3 x - 5 .......... Calculer P(+2) = 5 ]] * [[Mathc initiation/Fichiers h : x_18a00|P(x) = x**3 + 8 x**2 - 29 x + 44......... Calculer P(-11) = 0 ]] * [[Mathc initiation/Fichiers h : x_18a01|P(x) = x**3 - 1 ................................... Calculer P(1) = 0 ]] : <br> Copier ces fichiers dans votre répertoire de travail : : * [[Mathc initiation/Fichiers h : x_18a1|x_a.h ...................... Déclaration des fichiers h]] * [[Mathc initiation/Fichiers h : x_18a2|x_d.h ...................... Les utilitaires]] * [[Mathc initiation/Fichiers h : x_18a3|x_init.h ................... Initialiser et copier un polynôme]] * [[Mathc initiation/Fichiers h : x_18a4|x_horner.h .............. L'algorithme pour la méthode de Horner]] : <br> Tester ces exemples sans chercher à modifier le code : : <br> Calculons P(a) : * [[Mathc initiation/Fichiers h : x_18c01a| P(x) = -3.00*x**2 -20.00*x +4.00]] * [[Mathc initiation/Fichiers h : x_18c01b| P(x) = +3.00*x**5 -38.00*x**3 +5.00*x**2 -1.00]] * [[Mathc initiation/Fichiers h : x_18c01c| P(x) = +5.00*x**6 +3.00*x**5 -2.00*x**4 +6.00*x**3 +5.00*x**2 -2.00*x -9.00]] : <br> Calculons P(a) quand a est une racine : * [[Mathc initiation/Fichiers h : x_18c02a| P(x) = + x**3 +8.00*x**2 -29.00*x +44.00]] * [[Mathc initiation/Fichiers h : x_18c02b| P(x) = + x**4 +3.00*x**3 -30.00*x**2 -6.00*x +56.00]] : <br> Les deux applications suivantes permettent d'encadrer les racines. : <br> : Vérifions si les racines de P(x) sont toutes inférieurs à a : * [[Mathc initiation/Fichiers h : x_18c03a| P(x) = + x**4 +3.00*x**3 -30.00*x**2 -6.00*x +56.00]] * [[Mathc initiation/Fichiers h : x_18c03b| P(x) = +2.00*x**3 + x**2 -3600.00 ]] : <br> Vérifions si les racines de P(x) sont toutes supérieurs à a : * [[Mathc initiation/Fichiers h : x_18c04a| P(x) = + x**4 +3.00*x**3 -30.00*x**2 -6.00*x +56.00]] * [[Mathc initiation/Fichiers h : x_18c04b| P(x) = +5.00*x**6 +3.00*x**5 -2.00*x**4 +6.00*x**3 +5.00*x**2 -2.00*x -9.00]] : <br> Si vous souhaitez modifier le code, tester les exemples suivants : * [[Mathc initiation/Fichiers h : x_18d01a| Modifier la taille et les coéfficients d'un polynôme]] * [[Mathc initiation/Fichiers h : x_18d01b| P(x) = 0]] * [[Mathc initiation/Fichiers h : x_18d01c| P(x) = 10]] * [[Mathc initiation/Fichiers h : x_18d01d| P(x) = +9.00*x**3]] * [[Mathc initiation/Fichiers h : x_18d02a| La fonction compute_horner();]] * [[Mathc initiation/Fichiers h : x_18d02b| La fonction p_horner();]] : ---- {{AutoCat}} qqvr3df4yksqv8s9jnkx8a5zn2l59ld Mathc initiation/Fichiers h : x 18d02b 0 76113 684333 676638 2022-08-29T08:24:10Z Xhungab 23827 modification mineure wikitext text/x-wiki [[Catégorie:Mathc initiation (livre)]] [[Mathc_initiation/Fichiers_h_:_c18|Sommaire]] Installer et compiler ces fichiers dans votre répertoire de travail. {{Fichier|d02b.c|largeur=70%|info=|icon=Crystal Clear mimetype source c.png}} <syntaxhighlight lang="c"> /* ---------------------------------- */ /* save as d02b.c */ /* ---------------------------------- */ #include "x_a.h" /* ---------------------------------- */ # define DEGREE 2 # define COEFF DEGREE + 1 /* ---------------------------------- */ int main(void) { int n = 3; double *Px; double *Pt; double *Pa; double A[3] = {-3,-20,4}; Px = I_p(n); /* Px = P(x) */ Pt = I_p(n); /* Pt = P temporaire */ Pa = I_p(n); /* Pa = P(a) */ clrscrn(); c_a_P(A,Px); printf(" If P(x) is : \n\n"); p_P(Px); printf(" If you use p_horner(); without compute_horner(); \n\n"); p_horner(Px,Pt,Pa); stop(); free(Px); free(Pt); free(Pa); return 0; } /* ---------------------------------- */ /* ---------------------------------- */ </syntaxhighlight> Dans cet exemple on voit une utilisation de la fonction p_horner(); Le fait de ne pas utiliser la fonction compute_horner(); avant d'appeler cette fonction, les calculs ne sont pas exécutés, donc toutes les valeurs sont nulles. '''Exemple de sortie écran :''' <syntaxhighlight lang="dos"> If P(x) is : -3.00*x**2 -20.00*x +4.00 If you use p_horner(); without compute_horner(); -3.00 -20.00 +4.00 +0.00 +0.00 +0.00 ------------------------------ +0.00 +0.00 +0.00 Press return to continue. </syntaxhighlight> lq6cezogzghnwdfikbma0zp0kzen34v Mathc initiation/Fichiers c : c30ch 0 78222 684330 677233 2022-08-28T20:27:09Z Xhungab 23827 modification mineure wikitext text/x-wiki [[Catégorie:Mathc initiation (livre)]] [[Mathc initiation/Fichiers h : c30| Sommaire]] Installer et compiler ces fichiers dans votre répertoire de travail. {{Fichier|c2h.c|largeur=70%|info=|icon=Crystal Clear mimetype source c.png}} <syntaxhighlight lang="c"> /* --------------------------------- */ /* save as c2h.c */ /* --------------------------------- */ #include "x_hfile.h" #include "fh.h" /* --------------------------------- */ int main(void) { double i; clrscrn(); printf(" Does lim x->0 %s exist ?\n\n", feq); printf(" Substituing 0 for x gives 0/0.\n"); stop(); clrscrn(); printf(" f : x-> %s\n\n", feq); printf(" Approximate f(x) by the right,\n"); printf(" for x near 0.\n\n"); for(i=1; i>0.1; i+=-.1) printf(" f(%+.1f) = %5.3f || f(%+.2f) = %5.6f || f(%+.3f) = %5.8f\n", i, f(i), i*.1, f(i*.1), i*.01,f(i*.01) ); stop(); clrscrn(); printf(" f : x-> %s\n\n", feq); printf(" Approximate f(x) by the left,\n"); printf(" for x near 0.\n\n"); for(i=-1; i<-0.1; i+=.1) printf(" f(%+.1f) = %5.3f || f(%+.2f) = %5.6f || f(%+.3f) = %5.8f\n", i, f(i), i*.1, f(i*.1), i*.01,f(i*.01) ); stop(); clrscrn(); printf(" With the table we arrive at the following conjecture.\n\n"); printf(" lim x->0 %s = 1\n\n", feq); stop(); return 0; } /* --------------------------------- */ /* --------------------------------- */ </syntaxhighlight> On peut obtenir le même résultat en utilisant la Règle de L'Hôpital. [[https://fr.wikipedia.org/wiki/R%C3%A8gle_de_L%27H%C3%B4pital wikipedia]]. 1 --- (log(1+x))' 1+x 1 1 ----------- = --- = --- et lim x->0 --- = 1 x' 1 1+x 1+x Remarque : A ----- (log(1+A*x))' 1+A*x A 1 A ------------- = ----- et lim x->0 ----- --- = --- (B*x)' B 1+A*x B B '''Exemple de sortie écran :''' <syntaxhighlight lang="dos"> Does lim x->0 log(1+x)/x exist ? Substituing 0 for x gives 0/0. Press return to continue. **************************** f : x-> log(1+x)/x Approximate f(x) by the right, for x near 0. f(+1.0) = 0.693 || f(+0.10) = 0.953102 || f(+0.010) = 0.99503309 f(+0.9) = 0.713 || f(+0.09) = 0.957530 || f(+0.009) = 0.99552682 f(+0.8) = 0.735 || f(+0.08) = 0.962013 || f(+0.008) = 0.99602121 f(+0.7) = 0.758 || f(+0.07) = 0.966552 || f(+0.007) = 0.99651625 f(+0.6) = 0.783 || f(+0.06) = 0.971148 || f(+0.006) = 0.99701195 f(+0.5) = 0.811 || f(+0.05) = 0.975803 || f(+0.005) = 0.99750830 f(+0.4) = 0.841 || f(+0.04) = 0.980518 || f(+0.004) = 0.99800532 f(+0.3) = 0.875 || f(+0.03) = 0.985293 || f(+0.003) = 0.99850299 f(+0.2) = 0.912 || f(+0.02) = 0.990131 || f(+0.002) = 0.99900133 f(+0.1) = 0.953 || f(+0.01) = 0.995033 || f(+0.001) = 0.99950033 Press return to continue. **************************** f : x-> log(1+x)/x Approximate f(x) by the left, for x near 0. f(-1.0) = inf || f(-0.10) = 1.053605 || f(-0.010) = 1.00503359 f(-0.9) = 2.558 || f(-0.09) = 1.047896 || f(-0.009) = 1.00452718 f(-0.8) = 2.012 || f(-0.08) = 1.042270 || f(-0.008) = 1.00402146 f(-0.7) = 1.720 || f(-0.07) = 1.036724 || f(-0.007) = 1.00351642 f(-0.6) = 1.527 || f(-0.06) = 1.031257 || f(-0.006) = 1.00301205 f(-0.5) = 1.386 || f(-0.05) = 1.025866 || f(-0.005) = 1.00250836 f(-0.4) = 1.277 || f(-0.04) = 1.020550 || f(-0.004) = 1.00200535 f(-0.3) = 1.189 || f(-0.03) = 1.015307 || f(-0.003) = 1.00150301 f(-0.2) = 1.116 || f(-0.02) = 1.010135 || f(-0.002) = 1.00100134 f(-0.1) = 1.054 || f(-0.01) = 1.005034 || f(-0.001) = 1.00050033 Press return to continue. **************************** With the table we arrive at the following conjecture. lim x->0 log(1+x)/x = 1 Press return to continue. </syntaxhighlight> ---- {{AutoCat}} tlmzs4d97ur10syg47llw20d96kh7q9 Mathc initiation/Fichiers c : c77cv 0 78422 684328 681756 2022-08-28T20:03:08Z Xhungab 23827 modification mineure wikitext text/x-wiki [[Catégorie:Mathc initiation (livre)]] [[Mathc initiation/Fichiers h : c77bs| Sommaire]] Installer et compiler ces fichiers dans votre répertoire de travail. {{Fichier|c1v.c|largeur=70%|info=|icon=Crystal Clear mimetype source c.png}} <syntaxhighlight lang="c"> /* --------------------------------- */ /* save as c1v.c */ /* --------------------------------- */ #include "x_hfile.h" #include "fv.h" /* --------------------------------- */ int main(void) { double x = 1.5; double y = 1.3; clrscrn(); printf(" (x,y) = (%0.1f,%0.1f) \n\n\n",x,y); printf(" %s \t\t\t= %0.8f\n", f1eq, f1(x,y)); printf(" %s \t= %0.8f\n\n\n", f2eq, f2(x,y)); printf(" %s \t\t\t= %0.8f\n", g1eq, g1(x,y)); printf(" %s \t= %0.8f\n\n\n", g2eq, g2(x,y)); stop(); return 0; } /* ---------------------------------- */ /* ---------------------------------- */ </syntaxhighlight> '''Vérifions par le calcul :''' <syntaxhighlight lang="dos"> (x,y) = (1.5,1.3) cos(x-y) = 0.98006658 cos(x)*cos(y)+sin(x)*sin(y) = 0.98006658 sin(x-y) = 0.19866933 sin(x)cos(y)-cos(x)sin(y) = 0.19866933 Press return to continue. </syntaxhighlight> '''Vérifions les égalités :''' <syntaxhighlight lang="dos"> Prenons z1 et z2 deux nombres complexes sur le cercle trigonométrique (r=1). Forme exponentielle Forme trigonométrique z1 = e**(ix) = cos(x) + i sin(x) z2 = e**(-iy) = cos(-y) + i sin(-y) z1*z2 = e**(ix)*e**(-iy) = [cos(x) + i sin(x)] [cos(-y) + i sin(-y)] = [cos(x) + i sin(x)] [ cos(y) - i sin(y)] (a) z1*z2 = e**[i(x-y)] donc = cos(x-y) + i sin(x-y) (b) 1) Développons (a) : [cos(x) + i sin(x)] [cos(y) - i sin(y)] = [cos(x) cos(y) - i**2 sin(x)sin(y)] + [cos(x) (-)i sin(y) + i sin(x)cos(y)] = [cos(x)cos(y) + sin(x)sin(y)] + i[sin(x)cos(y) - cos(x)sin(y)] 2) Comparons les parties réelles et imaginaires obtenu en (1) avec celles de z1*z2 (b) : cos(x-y) = [cos(x)cos(y) + sin(x)sin(y)] sin(x-y) = [sin(x)cos(y) - cos(x)sin(y)] </syntaxhighlight> {{AutoCat}} 6ardsml52xoa67s45vq7tstsyogmd1p Mathc initiation/Fichiers h : x 18a01 0 78950 684332 2022-08-29T08:18:11Z Xhungab 23827 modification mineure wikitext text/x-wiki [[Catégorie:Mathc initiation (livre)]] [[Mathc_initiation/Fichiers_h_:_c18|Sommaire]] Entrainez vous avec cet exemple pour comprendre l'algorithme de la méthode de Horner. P(x) = x**3 - 1 soit : P(x) = x**3 + 0 x**2 + 0 x - 1 Calculons P(1) par la méthode de Horner : * On pose les coefficients du polynôme dans la première ligne. * On pose le premier coefficient du polynôme dans la troisième ligne. {| class="wikitable" |+ P(1) = ? |- | 1 || 0 || 0 || -1 |- | || 0 || 0 || 0 |- | 1 || 0 || 0 || 0 |} * '''On pose 1*1 dans la deuxième ligne''' (on calcul : P(1)). [''On multiplié par (1) le premier coefficient de la troisième ligne'' ] * On ajoute le coefficient de la première ligne avec celui de la deuxième ligne et on pose le résultat dans la troisième ligne. {| class="wikitable" |+ P(1) = ? |- | 1 || 0 || 0 || -1 |- | || (1*1)+0 || 0 || 0 |- | 1 || 1 || 0 || 0 |} * '''On pose (1*1) dans la deuxième ligne''' (on calcul : P(1)) [''On multiplié par (1) le deuxième coefficient de la troisième ligne'' ] * On ajoute le coefficient de la première ligne avec celui de la deuxième ligne et on pose le résultat dans la troisième ligne. {| class="wikitable" |+ P(1) = ? |- | 1 || 0 || 0 || -1 |- | || 1 || (1*1)+0 || 0 |- | 1 || 1 || 1 || 0 |} * '''On pose (1*1) dans la deuxième ligne''' (on calcul : P(1)) [''On multiplié par (1) le troisième coefficient de la troisième ligne'' ] * On ajoute le coefficient de la première ligne avec celui de la deuxième ligne et on pose le résultat dans la troisième ligne. {| class="wikitable" |+ P(1) = ? |- | 1 || 0 || 0 || -1 |- | || 1 || 1 || (1*1)+(-1) |- | 1 || 1 || 1 || 0 |} * Cela donne : {| class="wikitable" |+ P(1) = ? |- | 1 || 0 || 0 || -1 |- | || 1 || 1 || 1 |- | 1 || 1 || 1 || 0 |} Cela nous permet d'écrire que 1 est une racine du polynôme. Donc (x-1) est un facteur de P(x). Le deuxième facteur est (x**2 + x + 1). (voir les coefficients non nul de la troisième ligne (1,1,1) P(x) = x**3 - 1 = (x - 1) (x**2 + x + 1) {{AutoCat}} dl2pdt7hgm6g905ogxpbs1ogox37ay8