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