Présentation des langages Javascript et Python
P. Duval et L. Signac
Contenu du document
1 Situation des 2 langages 1
2 Environnements de travail 1
3 Types de données scalaires 2
4 Opérateurs 3
5 Types de données collections 3
6 Entrées/sorties 4
7 Fonctions 4
8 Itérations 5
9 Tests 7
1 Situation des 2 langages
Javascript et Python sont des langages multi-paradigmes, comme beaucoup de langages modernes.
Voici quelques-unes de leurs caractéristiques :
langages interprétés, pouvant être compilés en bytecode, et disposant d’une REPL (boucle lecture, évaluation,
affichage)
programmation impérative structurée
programamtion orientée objets
bribes de programmation fonctionnelle
typages dynamiques
2 Environnements de travail
2.1 Python
Minimum requis : python 3 officiel (livré avec idle)
Utilisation d’un EDI / distribution plus complète
Ma config : Pyzo + Miniconda + IPython + Jupyter
EduPython (attention au module lycee)
Anaconda + Spyder
. . .
2.2 Javascript
Minimum requis : Navigateur + Editeur de texte à coloration syntaxique
1
Configurations :
Ma config : Firefox et Notepad++
ou Firefox + extension Firebug + Notepad++ ou sublimetext (non libre)
ou Chrome + Notepad++ ou sublimetext (non libre)
. . .
3 Types de données scalaires
3.1 Python
int : entiers sans limite de taille (autre que la RAM)
float : virgule flottante IEE754 double précision (idem double du C)
complex : nombres complexes (formé d’un couple de float)
bool : deux valeurs True et False
NoneType : une seule valeur None
Particularité : le typage est fort (on ne peut pas ajouter une chaîne et un nombre), mais dynamique. Le type des variables
(en Python, on devrait parler de noms ou d’étiquettes), est défini à l’exécution, au moment de l’affectation, et non à
l’écriture du code.
La fonction type permet de connaître le type d’un objet (ou d’une variable) :
type(3+4j)
--> complex
3.2 Javascript
number : virgule flottante IEE754 double précision (64 bits) (idem double du C)
boolean: deux valeurs true et false
null : permet de ne donner, à un élément existant, ni type ni valeur
Particularité : Javascript est un langage faiblement typé, mais dynamique. Le type des variables est défini à l’exécution,
lors de l’affectation et non à l’écriture du code. Il est possible de modifier le type d’une variable en cours de programme.
La fonction typeof permet de connaître le type d’un objet (ou d’une variable).
var y;
typeof(y);
--> undefined
y=null;
typeof y;// autre syntaxe possible
--> object
y= -12;
typeof(y);
--> number
var tablo =[1,2,4,8,16];
typeof(tablo);
--> object
Tout élément pouvant dériver d’un objet, dans Javascript, il peut être nécessaire de demander plus de précision :
y=null;
Object.prototype.toString.apply(y);
--> [object Null]
y= -12;
2
Object.prototype.toString.apply(y);
--> [object Number]
var tablo =[1,2,4,8,16];
Object.prototype.toString.apply(tablo);
--> [object Array]
4 Opérateurs
4.1 Python
Arithmétique sur les nombres :
+
,
-
,
*
,
**
(exponentiation),
/
,
//
(division entière),
%
(reste de la division entière),
et affectation élargie +=,*=. . . mais pas ++ ou --
opérateurs binaires : &et, |ou, ˆou exclusif, ~non , <<,>> décalages
opérateurs booléens : or,and,not
opérateurs de comparaison : ==,!=,<=,<,>=,>
Particularité : en Python 3, le type du résultat de la division est fonction de l’opérateur (/ou //) et non des opérandes
4.2 Javascript
Arithmétique sur les nombres :
opérateurs binaires +(addition ou concaténation), -,*,/,%(reste de la division entière)
opérateurs unaires +(conversion en nombre), -(CPL2), ++ (incrémentation), -- (décrémentation)
opérateurs binaires : &(et), |(ou), ˆ(ou exclusif), ~(non => CPL1), <<,>>,>>> (décalages)
opérateurs booléens : || (ou logique), && (et logique), !(non logique)
opérateurs de comparaison : ==,=== (égalité stricte), !=,!== (inégalité stricte), <=,<,>=,>
Particularités : en Javascript, l’opérateur +force le retypage du résultat du type du premier opérande en number
alert(1!= '1')// renvoie false
alert (1!== '1')// renvoie true
alert(1!== +'1')// renvoie false
5 Types de données collections
5.1 Python
list : séquence mutable d’objets hétérogènes
dict : collection mutable de couples clé-valeur
str : chaînes de caractères (séquence non mutable)
noms_hobbits =['Frodon','Sam','Pippin','Merry','Pippin']# une liste de chaînes
noms_hobbits[1]
--> 'Sam'
naissances_hobbits ={'Frodon':1368,'Bilbon':1290,'Sam':1380,
'Pippin':1390,'Merry':1382}# dictionnaire
naissances_hobbits['Sam']
--> 1380
Particularité : Pour des tableaux multidimensionnels rapides et homogènes (matrices, etc. . . ), on utilise généralement le
module extérieur numpy plutôt que des listes imbriquées.
3
5.2 Javascript
array : tableau d’objets hétérogènes mutable (différentes méthodes disponibles : pop,push,reverse,sort. . . )
object : JSON pour JavaScript Object Notation, appelé aussi tableau associatif (mutable)
string : chaînes de caractères (séquence immutable)
monTableau =[15,monBooleen,'texte a trou',monObjet, -7654];// tableau hétérogène
monTableau[1];
--> 'true'
naissances_personnages = {'George Boole':1815,'Gordon Moore':1929,
'John von Neumann':1903,'Blaise Pascal':1623}// object
naissances_personnages['John von Neumann'];
--> 1903
Particularité : Tous les objets Javascript sont adressés par référence et non par valeur. Pour traiter rapidement de
gros tableaux, Javascript intègre des stuctures prédéfinies avec des nombres entiers sur 8, 16 ou 32 bits.
Int8Array
, . . .
Int32Array, . . .
6 Entrées/sorties
6.1 Python
Affichage : print
Entrée : input
a=int(input("Votre âge ?")) # input renvoie une chaîne, qu'il faut convertir
a=a+10
print("Dans 10 ans, vous aurez",a,"ans")
6.2 Javascript
Affichage : document.write (ou document.writeln) ou alert (ou console.log)
Entrée : prompt
a=Number(prompt("Votre âge ?"));// prompt renvoie une chaîne, qu'il faut convertir
a=a+10;
document.write("Dans 10 ans, vous aurez ",a," ans");
7 Fonctions
7.1 Python
def syracuse(n):
""" syracuse(n) renvoie le terme suivant
n de la suite n/2 ou 3n+1
"""
if n%2== 0:
return n// 2
4
else:
return n*3+1
n=27
for iin range(10):
print(n)
n=syracuse(n)
les fonctions sont des objets de première classe (on peut par exemple écrire f = syracuse)
la récursivité est permise
il n’y a pas d’optimisation pour la récursivité terminale
Particularité : les blocs sont délimités par l’indentation et il n’y a pas de mot clé de fin de bloc (idem pour les fonctions,
tests, boucles etc. . . )
7.2 Javascript
function syracuseRecursive(tabloSuite) {
// exemple de fonction réversible qui reçoit et renvoie un objet Array
var n=tabloSuite[tabloSuite.length-1];
if (n == 1)return tabloSuite;
if (n %2== 0){
tabloSuite.push(n/2);
return syracuseRecursive(tabloSuite);
}else {
tabloSuite.push(n *3+1);
return syracuseRecursive(tabloSuite);
}
}
document.write("suite : " ,syracuseRecursive([6]));
En JavaScript, les fonctions sont des objets de première classe (objets Function) (on peut écrire
f = syracuse
). Cela
signifie qu’elles peuvent être manipulées et échangées, qu’elles peuvent avoir des propriétés et des méthodes, comme
tous les autres objets JavaScript.
la récursivité est permise et il n’y a pas d’optimisation pour la récursivité terminale
var sin =Math.sin;
alert(sin(Math.PI/6));
8 Itérations
8.1 Python
La boucle for permet d’itérer sur tout objet itérable (listes, dictionnaires. . . ).
for nom in noms_hobbits:
print(nom, end=", ")
--> Frodon, Bilbon, Sam, Merry, Pippin,
for nom, naiss in naissances_hobbits.items():
5
1 / 8 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !