L'INFORMATIQUE
AU LYCEE BEAULIEU
Retour à l'accueil.

NSI : NUMERIQUE ET SCIENCES INFORMATIQUES




Les activités en détail


Pour commencer


Pour commencer, nous allons dans cette activité,
remplir un tableau
et répondre à quelques questions en lien avec l'informatique. Puis nous répondrons à un questionnaire
sur nos préférences ou nos habitudes numériques !

ACCUEIL DES TROISIEMES !!!


Pour accueillir les troisièmes, vous élèves de la spécialité NSI premières, vous allez leur montrer comment faire bouger une tortue pour qu'elle dessine une forme géométrique.
Voici votre TP de découverte de Turtle de chez Python.

Programmation en Python


Entrons tout de suite dans le vif du sujet avec cette partie "Langages et programmation".
Nous allons d'abord étudier dans une première activité, ce qu'est un langage en informatique puis un programme.
Nous verrons ensuite plus particulièrement le langage Python et Pyzo.
>
Nous aborderons ensuite par cette deuxième activité, la programmation en Python.

>>

Pour mettre en application ces nouvelles connaissances, et nous exercer à la programmation
deux séries d'exercices, exercices 1ère partie et exercices 2ème partie
attendent notre perspicacité pour être résolus !

>>>

Deuxième série d'exercices : faire des dessins avec une tortue !
Et une dernière série d'exercices pour les plus avancés.

Nous allons maintenant aborder la mise au point des fonctions et leur spécification.


>
Pour vous aider à programmer en python, voici un mémo python
dans lequel vous trouverez de nombreuses commandes utiles.
Voici un autre mémo python plus précis Il ne faut pas hésiter à l'utiliser.
>
Pour en apprendre plus sur le langage python et ses nombreuses commandes,
je vous invite à visiter ce site dédié à Python
>

Représentation des données



Une machine comme un ordinateur fonctionne avec des circuits électroniques (constitués de transistors)
ne pouvant se trouver que sous deux états :
SOUS TENSION, le courant passe et on note cela l’état 1
ou HORS TENSION, le courant ne passe pas et on note cela l’état 0.

Donc dans un ordinateur, toutes les informations (données et programmes) sont représentées à l’aide de deux chiffres 0 et 1, appelés chiffres binaires ou binary digits en anglais ou plus simplement bits.

Dans la mémoire d’un ordinateur (RAM, ROM, registres des micro-processeurs), ces chiffres binaires sont regroupés en octets, c’est-à-dire par " paquets " de 8, qu’on appelle bytes en anglais.
Ces octets sont organisés en mots machine (words en anglais) de 2, 4 ou 8 octets pour les machines les plus courantes.
Par exemple, une machine dite de 32 bits est un ordinateur qui manipule directement des mots de 4 octets (4 x 8 = 32 bits) lorsqu’il effectue des opérations (en mémoire ou dans ses calculateurs).

Ce regroupement des bits en octets ou mots machine permet de représenter et manipuler d’autres données que des 0 et des 1, comme par exemple des nombres entiers,
des (approximations de) nombres réels,
des caractères alpha-numériques ou des textes
mais aussi des images, des vidéos.


Il est nécessaire d’inventer des encodages pour représenter ces informations.

Représentation des nombres entiers


Nous allons commencer par rechercher et comprendre

comment les entiers naturels sont codés pour être utilisés dans un ordinateur.

Voici un bilan du cours sur le codage de entiers naturels.

Python est capable de gèrer les très grands nombres comme le montre cet exemple.

Python posséde ses propres fonctions pour effectuer des conversions. A vous d'essayer.

Représentation des nombres entiers relatifs


Regardons comment

les entiers relatifs sont codés dans un ordinateur.

Représentation des nombres réels


Nous savons représenter en machine un nombre entier si ce nombre est compris entre deux bornes qui dépendent du nombre d’octets utilisés.
Qu’en est-il pour un nombre réel quelconque ?
Ces nombres sont de différents types :
entier comme 3,
décimal comme -4,25 ou 0,1,
rationnel comme 1/3,
irrationnel comme √2 et π.
Il y en a une infinité.

De plus pour un nombre donné, nous ne pouvons stocker dans la mémoire d’une machine qu’un nombre fini de ses décimales.

Donc, nous ne pouvons représenter qu’un nombre fini de réels de manière exacte
et pour tous les autres nous utilisons une valeur approchée.

Par exemple, les nombres 3, -4,25 et 5/8 sont représentés de manière exacte,
les nombres 0,1, 8/5 et π de manière approchée !!

En informatique, ces nombres à virgules sont appelés " nombres à virgule flottante " ou " nombres flottants " et leur type en Python est " float ".

Nous allons commencer par comprendre comment les nombres réels sont codés dans l'ordinateur
avec cette première activité.

Les nombres réels étant codés de manière approximative,
il peut arriver des problèmes lors d'applications pratiques qui peuvent s'avérer très graves.
Voici trois exemples de ces problèmes liés au codage des nombres réels.

Le codage de certains réels en valeurs approchées est bien sûr à connaître et cela ne peut pas nous empêcher de réaliser des algorithmes qui utilisent des réels.
Cette activité sur les flottants en Python
va nous permettre de comprendre quelques unes des approximations que nous rencontreront et comment les dépasser pour réaliser nos algorithmes.

Représentation des caractères en informatique


Travail de recherche sur les codages des caractères.
Dans un document texte répondre aux différentes questions suivantes par des textes,
des tableaux, des images si nécessaire.

Qu’est-ce qu’on appelle les caractères ?
Qu’est-ce que le codage ASCII ?
Comment y sont codées les lettres> ?
Comment y sont codés les chiffres ?
Les autres codages pour les caractères accentués par exemple ?
Des encodages pour les autres langues ?

Voici quelques informations sur le codage des cararctères en informatique.
Et quelques exercices pour vérifier que les codages n'ont plus de secret !

Interaction homme - machine dans le web


Le "World Wide Web", ou "Web" a été développé au CERN (Conseil Européen pour la Recherche Nucléaire) par le Britannique Sir Timothy John Berners-Lee et le Belge Robert Cailliau au début des années 90.
À cette époque les principaux centres de recherche mondiaux étaient déjà connectés les uns aux autres, mais pour faciliter les échanges d'information Tim Berners-Lee met au point le système hypertexte.
Ce système permet, à partir d'un document, de consulter d'autres documents en cliquant sur des mots clés. Ces mots "cliquables" sont appelés hyperliens et sont souvent soulignés et en bleu.
Ces hyperliens sont plutôt connus aujourd'hui sous le simple terme de "liens".

Cette première page web est toujours consultable.

Tim Berners-Lee développe le premier navigateur web c’est-à-dire un logiciel qui permet de lire des pages contenant des hypertextes, il l'appelle simplement "WorldWideWeb". Il faudra attendre 1993 et l'arrivée du navigateur web "NCSA Mosaic" pour que le web commence à devenir populaire en dehors du petit monde de la recherche.

Techniquement le web se base sur trois choses :
- le protocole HTTP (HyperText Transfert Protocol),
- les URL (Uniform Resource Locator)
- et le langage de description HTML (HyperText Markup Language).

Nous aurons, très prochainement l'occasion de revenir sur ces trois éléments.

Web et internet ne sont pas la même chose et beaucoup de monde les confondent.
Internet est un "réseau de réseaux" s'appuyant sur le protocole IP.
Le web est la combinaison de trois technologies : HTTP, URL et HTML et s’appuie sur internet pour être diffusé. D'ailleurs on trouve autre chose que le "web" sur internet, par exemple, les courriels avec le protocole SMTP (Simple Mail Transfert Protocol), les transferts de fichiers avec le protocole FTP (File Transfert Protocol), la messagerie instantanée, la téléphonie.

Nous allons étudier dans cette partie du programme les interactions entre l’homme et la machine à partir de pages web en abordant
le HTML et le CSS
et un peu le JavaScript
puis nous parlerons des requêtes HTTP.

HTML / CSS


Nous allons commencer par une première activité,

sur le HTML,

le langage de description pour fabriquer des pages web.


Puis nous poursuivons par une deuxième activité,

sur le CSS,

le langage pour le style des pages web.

JavaScript


Nous avons déjà pu nous familiariser avec le couple HTML / CSS, en fait, le couple est plutôt un trio, car aujourd'hui un développeur web ne peut pas faire l'impasse sur le JavaScript.
JavaScript est un langage de programmation (comme Python), créé en dix jours par Brendan Eich en 1995. Malgré son nom, JavaScript n'a rien à voir avec le langage Java, même si Brendan Eich affirme s'être inspiré de nombreux langages, dont Java, pour mettre au point JavaScript. Il est devenu incontournable dans le développement web et un interpréteur est intégré dans tous les navigateurs.
Notre but ici n'est pas d'apprendre un nouveau langage de programmation, mais juste d'étudier quelques exemples d'utilisation du JavaScript, notamment dans le cas des interactions entre un utilisateur et une page web.

Voici deux exemples d'utilsation de JavaScript:
- premier exemple,
- deuxième exemple.

Voici un troisième exemple d'utilisation de JavaScript dans une page HTML,
il s'agit d'un dossier compressé à télécharger et à décompresser avant d'ouvrir les fichiers.
Regardez comment fonctionnent les fonctions JavaScript,
puis placez dans votre page web des fonctions Javascript pour que votre page devienne dynamique.

Dialogues client / serveur : les requêtes HTTP.


Nous allons aborder une façon dont les ordinateurs communiquent entre eux dans le réseau internet.
Nous allons commencer par exposer succintement le modèle le plus utilisé sur l'internet,
le modèle client/serveur,
et les requêtes HTTP.

Les méthodes Get et Post

Nous allons étudier maintenant deux méthodes utilisées dans les requêtes,
les méthodes GET et POST.

Représentation des données : types construits


Dans une partie précédente sur le langage Python, nous avons étudié différents types de valeurs.
Les types int, float, bool, str sont des types simples.
Le type str est simple mais il est particulier : chaque caractère d’une chaîne a un indice et ce système permet d’accéder à une partie de la chaîne.
Exemple.
ch = ‘bonjour’
ch[0] a pour valeur ‘b’
ch[3:7] a pour valeur ‘jour’.
ch[0] et ch[3:7] sont aussi de type str.


Avec ces types nous pouvons définir des variables qui représentent une donnée
dont la valeur est un nombre ou une chaîne de caractères :
variable = valeur
age = 45   ;   type(age) = int
nom = "Martin"   ;   type(nom) = str


Les séquences en Python

Il est possible de "stocker" plusieurs grandeurs dans une même structure, ce type de structure est appelé une séquence.
Nous définirons une séquence comme un ensemble fini et ordonné d'éléments dont les indices vont de 0 à n-1 si cette séquence comporte n éléments.
Il existe des cas où regrouper des données a du sens comme pour les coordonnées d’un point ou bien lorsqu'on a un nombre important de données.
Ainsi ces objets (les coordonnées d’un point par exemple) sont composés de plusieurs objets (chaque coordonnée du point).
On parle alors de type composé ou de type construit.

Nous allons étudier trois nouveaux types d’objets :
le type tuple (n-uplet),
le type list (liste) et
le type dict (dictionnaire).

Une fiche d'exercices sur les différents types construits.

N-uplets


Un n-uplet est un objet de type tuple.
Comme une chaîne de caractère, c’est une suite ordonnée d’éléments mais ceux-ci peuvent être de n’importe quel type.
Les éléments d’un tuple ne sont pas modifiables. De la même façon les coordonnées d’un point, d’une ville sont des données fixes non modifiables.
Pour plus de lisibilité il est préférable d’encadrer les valeurs d’un tuple par des parenthèses.

Voici quelques activités pour découvrir et utiliser les n-uplets.

Voici une fiche bilan pour utiliser les tuples.

Les tableaux


Le type d’objets que nous allons étudier maintenant est la liste (list en Python).
Nous n’utiliserons pas le mot liste mais plutôt celui de tableau pour parler de ces objets.
Les tableaux sont comme les tuples, des séquences mais il existe entre eux deux une différence essentielle ;
il n’est pas possible de modifier un tuple après sa création (on parle d'objet "immutable"),
alors qu’on peut modifier les tableaux, ils sont modifiables (on parle d'objets "mutables").

Voici quelques activités pour découvrir et utiliser les tableaux.

Les dictionnaires


Le type d'objets étudié ici est le dictionnaire (dict en Python).
Les dictionnaires sont modifiables, comme pour les tableaux ou liste on parle d'objets "mutables".

Voici quelques activités pour découvrir et utiliser les dictionnaires.

Voici une fiche bilan pour utiliser les dictionnaires.

Les traitements de données en tables


L'organisation tabulaire des données est très répandue et très ancienne.
Le bulletin d'un élève est organisé en table et indique, pour chaque matière, la note de l'élève, la moyenne de la classe, la note la plus basse et la plus haute de la classe et l'appréciation du professeur.
Les résultats d'un match de tennis sont affichés comme une table ; les lignes de la table correspondent aux joueurs, les colonnes indiquent le nombre de jeux gagnés dans chaque set.
Le relevé de compte bancaire indique, pour chaque opération, sa date, son montant et sa nature (débit ou crédit).
Les tables les plus anciennes sont des livres de comptes de l’Égypte pharaonique.

Les données tabulées ont une place importante en informatique et sont de plus en plus nombreuses.
Elles doivent être stockées et doivent pouvoir être gérées, partagées ou modifiées à distance.
La recherche sur des systèmes offrant ces possibilités date du début des années 1960 avec les missions Apollo. Des sociétés comme IBM et Rockwell travaillaient sur ce projet.
Dans les années 1970 une première théorie sur les modèles relationnels, permettant le partage de nombreuses données, est publié par Edgar Franck Codd.
Il travaillait alors chez IBM qui développait un SGBD (système de gestion de base de données) fonctionnant avec le langage SQL (Structured Query Language : langage de requête structurée) qui permet de manipuler des bases de données relationnelles. Les tables de données, stockées dans des bases de données deviennent rapidement le principal moyen de stocker de l'information structurée.

Même sans utiliser de tels systèmes, la manipulation de données en tables depuis un langage de programmation est un outil important à maîtriser, car utilisé dans de nombreux domaines : calcul scientifique, intelligence artificielle, programmation web, bio-informatique, informatique financière, …

Il s'agit ici d'une introduction à la notion de bases de données étudiées en terminale.

Les traitements qui suivent peuvent être effectués dans un tableur qui propose des fonctions pour cela.
Mais il est important de comprendre comment ces fonctions peuvent être programmées.


Les données structurées au format csv


Nous allons commencer par étudier ces données en table,
d'abord qu'est-ce qu'une données structurées,
comment peut-on accéder à ces données
puis étudier plus en détail le format csv sous lequel on trouve ces données.

Dans cette première partie, nous allons étudier ces données dans un tableur à travers divers exercices.

Ces données sont issues entre autres
d'un fichier sur les villes de France
et d'un autre sur les passagers du Titanic en 1912.


Voici cette première partie sur les données en table.

Le traitement des données structurées


Après avoir découvert le format CSV, nous allons maintenant, à l'aide de Python, apprendre à effectuer des traitements sur ces données.
Pour traiter des données, nous allons utiliser la bibliothèque Python csv. Une bibliothèque Python permet de rajouter des fonctionnalités par rapport au langage de base.
La bibliothèque csv est donc très utilisée pour tout ce qui touche au traitement des données.
Il existe une autre bibliothèque utilisée pour le traitement des données, c’est Pandas que nous n'étudierons pas ici.


Voici cette deuxième partie sur le traitement des données en table.

Les données ouvertes et personnelles


Pour terminer ce sujet sur les données structurées, voici un petit questionnaire à propos de nos données, de nos droits et devoirs.
Répondez à ces questions sur fichier informatique. Je donnerais une correction en fin de semaine prochaine.


Les données ouvertes et les données personnelles.

a) Qu'est-ce que l'Open Data ?
b) Qu'est-ce que le RGPD ?
c) Qu'est-ce qu'une donnée personnelle ?
d) A partir du règlement général sur la protection des données, consultable entre autre sur Wikipédia, identifier les dispositions qui permettent de :
- donner son accord ou refuser la collecte de données privées ;
- contrôler ce qui est fait avec les données collectées ;
- se faire oublier.

Les métadonnées.

a) Que sont les métadonnées d'un fichier ?
b) À quoi peuvent-elles servir ?


Architectures matérielles et systèmes d'exploitation


Pour faire tourner nos algorithmes, envoyer nos messages, regarder des vidéos à partir de bibliothèques distantes,
il nous faut des machines avec lesquelles nous puissions communiquer de sorte qu'elles comprennent ce que vous voulons qu'elles fassent.
Pour tous cela il faut des machines polyvalentes, les ordinateurs, construits suivant un certain modèle, le modèle de von Neumann,
il faut être capable de communiquer avec cette machine, avec un certain langage, l'assembleur,
il faut que la machine soit grand public grâce à des systèmes d'exploitation,
et que cette machine puisse envoyer et recevoir des informations de l'extérieur via un réseau.

L'ambition de ce thème est de faire découvrir ces différents aspects des ordinateurs.

Les composants d'un ordinateur


Les ordinateurs sont des machines programmables.
En 1645, Blaise Pascal, un des grands savants du XVIIe siècle, auteur entre autre des Pensées, invente la pascaline, la première machine à calculer.
Ce n'est pas un ordinateur parce qu'elle n'est pas programmable, elle ne sait faire que des calculs,
c'est seulement une calculatrice.
Dans la première moitié du XIXe siècle en Angleterre, Charles Babbage imagine une machine programmable et Lady Ada Lovelace écrit le "premier algorithme" que cette machine pourrait exécuter.
En 1936, Alan Turing propose, dans un article, une machine capable d'exécuter des programmes écrits dans un langage de programmation.
En 1945, Max von Neumann décrit l'architecture que devrait avoir les ordinateurs.
Il faut ensuite attendre les inventions du transistor en 1947 puis des microprocesseurs en 1971, pour arriver à nos ordinateurs actuels.

Dans le document qui suit vous trouverez une description plus complète des composants d'un ordinateur.
Bonne lecture !

Après avoir lu le document précédent, il est temps de mettre les "mains dans le cambouis !".
Autrement dit, vous allez dissequer et démonter les composants d'un ordinateur
pour voir ce qu'il a dans le ventre,
puis le remonter de sorte qu'il puisse fonctionner après votre intervention !!
Voici donc la marche à suivre et le compte-rendu à réaliser après.

Charles Babbage Ada Lovelace Alan Turing John von Neumann

Les circuits et la logique booléenne


George Boole (1815 – 1864) développe une nouvelle forme de logique, à la fois symbolique et mathématique.
Le but : traduire des idées et des concepts en équations, leur appliquer certaines lois et retraduire le résultat en termes logiques.
Pour cela, il crée une algèbre binaire, dite booléenne, n'acceptant que deux valeurs numériques : 0 et 1.
Cette algèbre est définie par la donnée d'un ensemble E (non vide) muni de deux lois de composition interne (le ET et le OU) satisfaisant à un certain nombre de propriétés (commutativité, distributivité...).
https://fr.wikipedia.org/wiki/George_Boole

Cette algèbre permet de modéliser des raisonnements logiques, en exprimant un « état » en fonction de conditions.
Par exemple dans les expressions

Communication = Émetteur ET Récepteur
Communication serait « VRAI » si à la fois Émetteur ET Récepteur étaient actifs
(c'est une fonction logique dépendant des variables Émetteur et Récepteur)

Décrocher = (Sonnerie ET Décision de répondre) OU décision d'appeler
Décrocher serait « VRAI » soit si à la fois on entend la sonnerie ET l'on décide de répondre, soit (OU) si simplement l'on décide d'appeler.
https://fr.wikipedia.org/wiki/Algèbre_de_Boole_(logique)

Cette algèbre aura de nombreuses applications en téléphonie et en informatique, notamment grâce à Claude Shannon en 1938, près d'un siècle plus tard.

George Boole Claude Shannon

Dans ce cours nous allons aborder la logique booléenne et son utilisation en informatique grâce au fonctionnement des transistors : activité sur les circuits et la logique booléenne.

Le langage assembleur


Un ordinateur est une machine qui exécute des commandes et donne un résultat en retour.
Ces commandes comme on l'a vu peuvent être écrites en python.
Le fonctionnement de l'ordinateur est régi par le courant électrique, soit le courant passe, soit il ne passe pas.
Il ne peut donc fonctionner que sous deux états, le courant passe ou le courant ne passe pas, soit dit autrement avec des 0 et des 1.
Il faut donc à un moment que notre programme en python soit traduit en des 0 et des 1 compréhensibles par l'ordinateur , c'est-à-dire, en langage machine.
Ce problème est résolu par des langages assembleurs capables de rendre les commandes en python, compréhensibles par la machine : l'assembleur transforme nos commandes python en une suite de 0 et 1, le langage machine, compréhensibles par l'ordinateur.
Le premier langage assembleur a été inventé par Nathaniel Rochester en 1954, pour l'ordinateur IBM 701 sur lequel il travaillait.
Par ailleurs ce monsieur a aussi travaillé ensuite sur l'intelligence artificielle.

Nous allons dans ce TP découvrir un langage assembleur et écrire des commandes en assembleur !
Afin de mieux comprendre le rôle du CPU, de son fonctionnement ainsi que de ses liens avec la mémoire
lorsqu'il exécute des commandes écrites en assembleur,
nous allons utiliser un simulateur développé par Peter L Higginson.
Merci à lui !

Les systèmes d'exploitation


Pour utiliser un ordinateur, il faut se faire comprendre de lui qui n'exécute que du langage machine. Pour cela il existe l'assembleur mais ce langage est peu compréhensible par les non initiés que nous sommes.
Il est donc nécessaire d'avoir un intermédiaire entre l'homme et la machine.
C'est le rôle principal d'un système d'exploitation (OS pour Operating System).
Ce système va "traduire" ce que nous voulons faire en langage machine afin que l'ordinateur comprenne et exécute l'action.

Voici des logos de systèmes d'exploitation dont certains sont plus connus que d'autres.
logos systèmes d'exploitation

Le document suivant sur le fonctionnement du système d'exploitation explique tout cela.

La vidéo suivante retrace l'histoire des systèmes d'exploitation.


Cette autre vidéo raconte l'histoire du système Unix.


Cette dernière vidéo explique le système d'exploitation en trois idées.

Linux : les commandes de base


Linux fait partie de la famille UNIX car son noyau en est un dérivé comme d'ailleurs les systèmes Android, macOS ou iOS. Windows n'est pas un dérivé de UNIX mais de MS-DOS. Cette standardisation autour du noyau UNIX porte le nom de POSIX (Portable Operating System Interface).
Dans la suite du cours nous ne parlerons que du standard POSIX, c'est-à-dire les systèmes de type UNIX.
À la "préhistoire" des systèmes d'exploitation (1960 - 1980), ces derniers étaient dépourvus d'interface graphique (système de fenêtres "pilotables" à la souris), toutes les interactions "système d'exploitation - utilisateur" se faisaient par l'intermédiaire de "lignes de commandes" (suites de caractères, saisies par l'utilisateur).
Aujourd'hui, même si les interfaces graphiques modernes permettent d'effectuer la plupart des opérations, il est important de connaître quelques-unes de ces lignes de commandes.
Pour saisir des lignes de commandes, nous allons utiliser une console, une interface système (shell en anglais), c'est un programme qui permet à l'utilisateur d'interagir avec le système d'exploitation. Les commandes qu'on va écrire dans la console correspondent à des programmes qui s'exécutent sur l'ordinateur puis elles rendent la main à l'utilisateur qui peut alors saisir de nouvelles commandes.

Voici donc quelques commandes assez simples utilisées dans les systèmes de type UNIX. Vous trouverez ici quelques aides en annexes pour vous aidez.

Bon courage.

Les réseux d'ordinateurs


L'un des principaux intérêts des appareils qu'on utilise comme les ordinateurs mais aussi les smartphones, les tablettes et tous les objets connectés est de pouvoir communiquer entre eux pour échanger des données, des informations.
Prenons un exemple.
Alice et Bob que nous avons déjà rencontrés, veulent visiter le site "www.beaulieu-informatique.fr".
Après tout, pourquoi pas, peut-être ont-ils un cours à préparer !!
Alice écrit l'adresse du site dans la barre d'adresse de son navigateur et presque aussitôt la page d'accueil du site apparaît sur son écran d'ordinateur. Le site est hébergé sur un serveur à des centaines de km de l'ordinateur d'Alice, l'information a donc dû passer par des cables électriques. Son copain Bob lui aussi visite le même site mais sur son smartphone dont la connexion est en wifi.
Cela ne pose pas de problème, la page d'accueil s'affiche en même temps sur l'écran de l'ordinateur d'Alice et sur l'écran du smartphone de Bob.
Il existe donc une ou des méthodes permettant à des machines très différentes de communiquer en même temps avec un serveur par des moyens différents (filaires et ondes) et d'obtenir le même résultat en même temps.
Ce sont ces méthodes ou protocoles que nous allons étudier maintenant.
Ces protocoles sont extrèmement importants puisqu'ils permettent à des milliards de machines de communiquer entre elles en même temps !

Nous allons détailler cela en plusieurs activités, certaines à lire seulement et d'autres avec quelques exercices.
Activité 1 sur l'introduction aux réseaux .
Acitivté 2 sur les protocoles TCP/IP.
Activité 3 sur les modèles TCP/IP et OSI.
Activité 4 sur le protocole du bit alterné.
Activité 5 sur une simulation de réseau grâce à un logiciel Filius.

Bonne découverte des réseaux et de leurs protocoles !

L'algorithmique


L'algorithmie est l'étude et la conception de règles permettant d'écrire des algorithmes. Ces algorithmes, traduits en un langage de programmation, vont donner des programmes.
Algorithme n'a rien à voir avec le rythme.
Le mot vient du nom du mathématicien perse Abu Abdallah Muhammad Ibn Musa Al-Khwârizmî (780 – 850), (latinisé au Moyen Âge en Algoritmi). Originaire du Khwârizm, une région de l’Ouzbékistan actuel, il a permis par ses écrits la diffusion jusqu'en Europe des chiffres arabes et de l'algèbre mot qui a pour origine le titre de l'un de ses ouvrages.
On trouve les premières traces d'algorithmes dans la civilisation babylonienne, 2000 ans avant notre ère où des méthodes de calculs effectués en base 60 et de résolutions d'équations sont décrites.
L'un des algorithmes les plus connus est celui d'Euclide (environ 300 avant J-C), il permet de calculer le plus grand diviseur commun de deux nombres entiers (PGCD).
Le second algorithme connu par les mathématiciens est celui d'Archimède pour calculer le nombre pi (π).

Mais en fait, qu'est-ce qu'un algorithme ?
Un algorithme est une succession d'instructions permettant d'aboutir à un résultat souhaité.
Selon wikipédia, "Un algorithme est une suite finie et non ambiguë d’opérations ou d'instructions permettant de résoudre des problèmes".

L'algorithmique intervient dans la vie de tous les jours. Quelques exemples pris dans wikipédia sur les algorithmes.
– Une recette de cuisine peut être réduite à un algorithme si on peut réduire sa spécification aux éléments constitutifs :
- des entrées (les ingrédients, le matériel utilisé).
- des instructions élémentaires simples (frire, flamber, rissoler, braiser, blanchir, etc.), dont les exécutions dans un ordre précis amènent au résultat voulu.
- un résultat : le plat préparé.

– Le tissage, surtout tel qu'il a été automatisé par le métier Jacquard est une activité que l'on peut dire algorithmique.

– Un casse-tête, comme le cube Rubik, peut être résolu de façon systématique par un algorithme qui mécanise sa résolution.

– En sport, l'exécution de séquences répondant à des finalités d'attaque, de défense, de progression, correspond à des algorithmes (dans un sens assez lâche du terme).


Notions de base


Nous allons commencer par étudier ou revoir quelques notions de base dans la réalisation des algorithmes.
Il va surtout être question de langage naturel pour écrire des algorithmes
et de calcul de complexité des algorithmes.

Parcours et recherches


Cette partie va nous permettre de faire quelques recherches et des calculs sur les valeurs d'un tableau.
Pour rechercher dans un tableau il y a deux façons de s'y prendre :
soit par un parcours séquentiel du tableau,
soit par une recherche dichotomique.

Nous allons voir les deux cas dans les TP suivants:
Parcours séquentiel
Recherche dichotomique.

Tris des valeurs d'un tableau


Les tris sont une activité très importante lorsqu'on a à manipuler des grandes séries de valeurs.
Plusieurs algorithmes de tris existent. Nous allons en étudier deux maintenant :
le tri par sélection
et le tri par insertion.


D'abord deux vidéos permettant de comprendre, par la danse, comment fonctionne ces algorithmes:

Le tri par insertion.


Le tri par sélection.


Une video expliquant pourquoi le tri et plus particulièrement ces deux tris.

Les algorithmes de tris
algo de tris

Des animations prises sur le sites Interstices.

Des animations de tris
image cliquable
animations de tris

Enfin une comparaison de la vitesse de différents tris.

Comparaison des vitesses
image cliquable
vitesse de tris

Algorithmes gloutons


Algorithme des plus proches voisins


Projets et jeux

Utilisation de dessins dans une fenêtre

>
Vous allez créer une fenêtre avec un module Tkinter puis y placer des objets géométriques pour commencer.
Voici la première partie avec Tkinter .
>>
La deuxième partie consiste à créer des figures avec la souris.
>>>
La troisième partie consiste à créer des objets animés dans une fenêtre.