Introduction et bases de JavaScript

Technologie web 2

Johan Girod

Avant-propos

Définition(s) du web

Définition(s) du web

Le World Wide Web — communément appelé WWW, W3, ou le web — est un système de pages web publiques interconnectées à travers l'Internet.
MDN doc

Définition(s) du web

Le web est une application internet constitué d'un réseau de serveurs et de clients échangeant des ressources

Schéma d'un échange entre client et serveur

Définition(s) du web

Le web est un ensemble de standards et protocoles

Lesquels ?

Le web est un ensemble de standards et protocoles

  • HTTP– protocole de communication client-serveur
  • HTML– structure et contenu
  • CSS– mise en forme
  • JavaScript– interactivité
  • ... et bien d'autres (WAI-ARIA, Browser API, WebAssembly, JSON...)

L'organisation W3C définit les standards du web

HTTP

HyperText Transfer Protocol

  • Protocole de communication client-serveur
  • Utilise le protocole réseau TCP/IP
  • Un serveur HTTP utilise le port 80
  • Le client effectue une requête HTTP pour une ressource sur une URL
  • Le serveur répond avec un code de statut et un contenu

En savoir plus

HTML

HyperText Markup Language

Permet de structurer et de décrire le contenu d'une page web grâce à des balises

CSS

Cascading Style Sheets

Permet de mettre en forme une page web grâce à des règles de style


body { background-color: #f0f0f0; }
        

JavaScript

Permet d'ajouter de l'interactivité à une page web


const button = document.querySelector('button');
button.addEventListener('click', () => alert('Hello world!'));
        

Quelles sont les étapes pour afficher une page web ?

  1. Le navigateur fait une requête sur une URL du serveur avec le protocole HTTP
  2. Le serveur envoie une réponse qui contient code HTML de la page (et éventuellement du CSS et du JavaScript)
  3. Le navigateur interprète le code HTML, CSS et JavaScript pour afficher la page à l'écran

Contenu du semestre

Programmation en Javascript = 11 x 2h

  • Bases du langage
  • Manipulation du DOM
  • Gestion des événements
  • Utilisation des APIs du navigateur

Evaluations

  • Deux évaluations sur machine
  • Durée : 1h30 (+ 30 min tiers temps)
  • Coeff 1

Introduction à JavaScript

Introduction à JavaScript

  • JavaScript (JS) est un langage de programmation interprété
  • Ubiquitaire dans le développement web (et au dela)
  • En constante évolution (standardisé par l'ECMA)

Ressources

Bases du langage

Déclaration de variables


// Déclaration d'une variable
let maVariable = 12;

Déclaration de variables


// Déclaration d'une variable
let maVariable = 12;

// Réaffectation d'une variable
maVariable = 42;
        

Déclaration de constantes


// Déclaration d'une constante
const maConstante = 12;

Déclaration de constantes


// Déclaration d'une constante
const maConstante = 12;

maConstante = 42; // Erreur
/*
    À noter : si une variable n'est pas réaffectée,
    il est préférable de la déclarer en constante
*/

Types de données


				>

Opérateurs



Structures de contrôle : if/else



				

Structures de contrôle : boucles



				

Structures de contrôle : switch



				

Bloc logique et portée des variables



Fonctions

Déclaration de fonctions


			

Déclaration de fonctions


				
	

Scope des variables

Variables locales


				
	

Scope des variables

Variables externes


				
	

Valeur par défaut


				
	

Fonctions fléchés


				
	

Tableaux

Déclaration et accès


				
	

Modifications de tableau


				
	

Portion de tableau


				
	

Portion de tableau


				
	

Itération sur un tableau


				
	

Objets

Objets: Déclaration et accès


				
	

Objet: modification de propriété


		
		

Objet: destructuration


		
		

Objet: destructuration


		
		

Objet: destructuration


		
		

À vous de jouer !

johangirod.com/cours

Exercices / TP

Pour effectuer les exercices, nous utiliserons un REPL (Read-Eval-Print-Loop) qui permet d’écrire du code et de l’exécuter directement.

Pour cela, vous installerez l’extension JavaScript REPL de VSCode pour directement évaluer le JavaScript dans votre éditeur de code.

Exercice 1

Écrire une fonction qui prend en argument la hauteur d’un véhicule et qui retourne la catégorie de tarification pour le péage de l’autoroute :

  • hauteur inférieure à 2m : “véhicule léger”
  • hauteur supérieure ou égale à 2m et inférieure à 3m : “véhicule intermédiaire”
  • hauteur supérieure ou égale à 3m : “poids lourd”

Tester cette fonction avec plusieurs hauteurs de véhicules.

Corrigé

Exercice 2

Écrire un programme capable de calculer la factorielle d’un nombre donné par l’utilisateur.

Corrigé

Exercice 3

Écrire une fonction qui prend en paramètre un tableau de nombres et qui retourne la moyenne de ces nombres.

Corrigé

Exercice 4

5.1

Écrire une fonction getBalance qui prend en paramètre une liste d’opération (credit ou debit) et qui retourne la valeur du compte (les crédit sont ajoutés, les débits sont soustraits).

const operations = [
	{ credit: 550, date: new Date('2023-01-01') },
	{ debit: 50, date: new Date('2023-01-02') },
	{ debit: 200, date: new Date('2023-01-03') },
	{ credit: 400, date: new Date('2023-01-08') }
];
getBalance(operations); //= 700
Corrigé

5.2

Modifier la fonction pour qu’elle prenne un second argument facultatif qui soit la valeur initiale du compte (par défaut 0).

getBalance(operations); // 700
getBalance(operations, 1000); // 1700
Corrigé

5.3

Modifier la fonction pour qu’elle prenne en argument un objet avec les propriétés suivantes :

  • operations: une liste d’opération (credit ou debit)
  • initialValue: la valeur initiale du compte (par défaut 0)
  • until: une date jusqu’à laquelle les opérations doivent être prises en compte (par défaut aujourd’hui)
const operations = [
  { credit: 550, date: new Date('2023-01-01') },
  { debit: 50, date: new Date('2023-01-02') },
  { debit: 200, date: new Date('2023-01-03') }
  { credit: 400, date: new Date('2023-01-08') }
];

getBalance({ operations: operations }); // 700
getBalance({ operations: operations, initialValue: 100 }); // 800
getBalance({ operations: operations, until: new Date('2023-01-05') }); // 300
Corrigé

Exercice 5

Nous allons pour cet exercice utiliser le REPL du navigateur. Pour y accéder, il suffit d’ouvrir le débugueur de votre navigateur (F12) et de cliquer sur l’onglet “Console”.

Coller du code dans la console du navigateur

Pour pouvoir coller du code dans la console du navigateur, vous devrez au préalabable écrire manuellement la phrase « autoriser le collage » et appuyer sur la touche « Entrée ».

Écrire un algorithme qui demande à l’utilisateur un nombre compris entre 1 et 10 jusqu’à ce que la réponse convienne.

Vous pourrez utiliser la fonction prompt pour demander à l’utilisateur de saisir un nombre et la fonction alert pour afficher un message à l’utilisateur.

let guess = prompt('Entrez un nombre entre 1 et 10');
// ...
alert('Bravo !');

Le nombre pourra être determiné aléatoirement à l’aide de la fonction Math.random et de la fonction Math.ceil.

Vous aurez à utiliser la fonction parseInt pour convertir la chaîne de caractères saisie par l’utilisateur en nombre.

Corrigé

Exercice 6

Pour commencer, nous allons changer la police d’écriture pour une police monospace. Pour cela, nous allons utiliser la propriété fontFamily de l’objet document.body.style :

Saisissez le code suivant dans la console du navigateur :

document.body.style.fontFamily = 'monospace';

Nous allons maintenant utiliser la méthode write de l’objet document pour écrire directement dans la fenêtre du navigateur. Par exemple pour écrire 4 fois le symbole + :

// testez ce code dans votre navigateur
const str = '+'.repeat(4);
document.write(str);

Maintenant :

  1. Écrire une fonction qui dessine une ligne d’étoiles * (le nb d’étoiles sera un paramètre).
  2. Écrire une fonction qui dessine un triangle composé d’étoiles, c’est-à-dire une succession de lignes d’étoiles de longueur 1 puis 2 puis 3 et ainsi jusqu’à n. Le passage à la ligne se fera à l’aide de la balise HTML adéquate (<br/>).
  3. Écrire une fonction qui dessine un carré de côté n, le bord de ce carré est composé d’étoiles, l’intérieur de « - ».
  4. Écrire une fonction qui dessine un losange creux, dont le bord est signifié par des étoiles. Chaque coté de ce losange sera donc dessiné avec n étoiles. Chaque « blanc » sera représenté par un espace non sécable encodé &nbsp;. Par exemple, pour créer une ligne de 4 espace puis une étoile, on écrira : document.write("&nbsp;".repeat(4) + "*"); Voici le rendu pour n=4 : Un losange de 4 étoile de côté
Corrigé