ERG::Code-2020-1 : Différence entre versions

De {}
Aller à : navigation, rechercher
Ligne 31 : Ligne 31 :
  
 
[[Louka Langenbick]]
 
[[Louka Langenbick]]
 +
 +
==Travail de fin du premier quadri==
 +
Jusqu'ici,
 +
 +
- nous sommes parti de l'écriture d'un poème collectif en binaire,
 +
traduit par la suite en ascii
 +
 +
- nous avons vu ensemble des éléments de programation en langage python,
 +
d'abord de manière plus générique avec l'écriture de scénarios
 +
d'interactions dans le terminal, puis plus spécifiques à la manipulation
 +
de texte
 +
 +
- vous avez écrit des énoncés et des programmes qui manipulent le poème
 +
original. Ces énoncés sont:
 +
* un programme qui remplace tous les i par des points d'exclamation
 +
 +
* changer les consonnes en voyelles de manière aléatoire
 +
 +
* un programme qui demande à l'utilisateur le numero d'une ligne, puis qui mélange tous les mots de cette ligne
 +
 +
* rapporter le nombre de voyelles dans une ligne specifiée par l'utilisateur
 +
 +
* Demander à l'utilisateur de choisir un lettre et ainsi répertorier tout les mots commnçant par celle-ci.
 +
 +
* Un programme qui supprime tous les "e"
 +
 +
* Un programme qui demande le numero de la ligne que l'utilisateur n'a pas aimé et la supprime
 +
 +
* Un programme qui supprime toutes les voyelles
 +
 +
* un programme qui génère de nouveaux vers à la structure syntaxique correcte à chaque fois qu'il s'exécute
 +
 +
Et les différents programmes se trouvent ci-dessous, dans les notes des cours.
 +
 +
- ces programmes ont généré de nouveaux poèmes (et peuvent pour certains
 +
en générer d'autres à chaque exécution).
 +
 +
- à partir de ces différents éléments; code binaire, texte, énoncés,
 +
programmes et poème générés, je vous ai demandé de réaliser une
 +
publication en ligne, en html et css sur le serveur du cours. Ce dernier
 +
point constitue le "rendu" du premier quadri. Il s'agit bien de
 +
sélectionner ce que vous voulez publier, de travailler la mise en forme
 +
et les différentes pages en html et en css. L'ajout d'éléments
 +
"algorithmiques" tels qu'un code qui au moment où on consulte la page
 +
fait des requêtes ou transforme les données n'est pas interdit mais pas
 +
non plus nécessaire. Il y a moyen de faire quelque chose de bien "juste
 +
par le graphisme" et le contenu que vous sélectionnez.
  
 
==Notes de cours==
 
==Notes de cours==

Version du 20 décembre 2020 à 18:15

Introduction

Ce cours est destiné aux étudiant.e.s de BAC2. Cette année, nous nous concentrons sur le rapport du numérique au texte et du texte au numérique. Le code générateur de poésie, le code en tant que poésie, le code secret, le code caché. Nous serons amenés à créer des poésies algorithmiques, des générateurs de textes, des machines à plagier, des bots twitter. À travers différentes expérimentations menées en atelier, nous aborderons plusieurs langages de programmation, concepts informatiques et exemples dans les champs de l'art, du design, de l'histoire de l'informatique.

Pages des étudiant.e.s

Célia Sallet

Eloïse Tabouret

Audrey Eyckmans

Margot Lecomte

Julien Playout

Clément Bitz

Zoé Sampson

Eliott Elkaim

Alice Saunier

Juliette Milhaud

Salomé Veilleux

Rosalie Fiers

Julie Fosse

Louka Langenbick

Travail de fin du premier quadri

Jusqu'ici,

- nous sommes parti de l'écriture d'un poème collectif en binaire, traduit par la suite en ascii

- nous avons vu ensemble des éléments de programation en langage python, d'abord de manière plus générique avec l'écriture de scénarios d'interactions dans le terminal, puis plus spécifiques à la manipulation de texte

- vous avez écrit des énoncés et des programmes qui manipulent le poème original. Ces énoncés sont:

  • un programme qui remplace tous les i par des points d'exclamation
  • changer les consonnes en voyelles de manière aléatoire
  • un programme qui demande à l'utilisateur le numero d'une ligne, puis qui mélange tous les mots de cette ligne
  • rapporter le nombre de voyelles dans une ligne specifiée par l'utilisateur
  • Demander à l'utilisateur de choisir un lettre et ainsi répertorier tout les mots commnçant par celle-ci.
  • Un programme qui supprime tous les "e"
  • Un programme qui demande le numero de la ligne que l'utilisateur n'a pas aimé et la supprime
  • Un programme qui supprime toutes les voyelles
  • un programme qui génère de nouveaux vers à la structure syntaxique correcte à chaque fois qu'il s'exécute

Et les différents programmes se trouvent ci-dessous, dans les notes des cours.

- ces programmes ont généré de nouveaux poèmes (et peuvent pour certains en générer d'autres à chaque exécution).

- à partir de ces différents éléments; code binaire, texte, énoncés, programmes et poème générés, je vous ai demandé de réaliser une publication en ligne, en html et css sur le serveur du cours. Ce dernier point constitue le "rendu" du premier quadri. Il s'agit bien de sélectionner ce que vous voulez publier, de travailler la mise en forme et les différentes pages en html et en css. L'ajout d'éléments "algorithmiques" tels qu'un code qui au moment où on consulte la page fait des requêtes ou transforme les données n'est pas interdit mais pas non plus nécessaire. Il y a moyen de faire quelque chose de bien "juste par le graphisme" et le contenu que vous sélectionnez.

Notes de cours

Cours du 7 décembre 2020

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
 
 
  </head>
 
  <body>
 
    <h1>Ma petite page web</h1>
 
    <!-- ceci est un commentaire -->
    <section>
      <h2>Article principal</h2>
      <h3>Un sous-sous-titre</h3>
      <img src="images/01-01thelanmowerman.jpg">
      <p>Omnis enim deserunt sit et iusto perferendis. Magni enim recusandae saepe quis esse. Minus consequatur vitae et autem.</p>
      <p>Omnis enim deserunt sit et iusto perferendis. Magni enim recusandae saepe quis esse. Minus consequatur vitae et autem.</p>
      <p>Omnis enim deserunt sit et iusto perferendis. Magni enim recusandae saepe quis esse. Minus consequatur vitae et autem.</p>
      <pre>
        Omnis
        enim
        deserunt
        sit
      </pre>
    </section>
 
    <section>
        <h2>Articles secondaires</h2>
        <article>
          <h3><a href="article.html">Article 1</a></h3>
          <p>Omnis enim deserunt sit et iusto perferendis. Magni enim recusandae saepe quis esse. <a href="http://wikipedia.be">Minus consequatur</a> vitae et autem.</p>
        </article>
        <article>
          <h3>Article 2</h3>
          <p>Omnis enim deserunt sit et iusto perferendis. Magni enim recusandae saepe quis esse. Minus consequatur vitae et autem.</p>
      </article>
    </section>
 
    <section>
        <h2>Liens externes</h2>
        <div>
          <h4>Les liens des copains</h4>
          <ul>
            <li>Le site de Dudule</li>
            <li>Le site de Machin</li>
            <li>Le site de Gérard</li>
          </ul>
        </div>
        <div>
          <h4>Les liens des pas copains</h4>
        </div>
 
 
    </section>
 
 
 
 
  </body>
</html>

Cours du 30 novembre 2020

# -*- coding: utf-8 -*-
import random
 
noms = ['soupe','pistou','alcool','Chien','casse','savon','deboires','MESSAGE','ALERTE','plafond','GQSK','s','chemin','pieton','mauX','a=our','soir']
ponctuation = [',','!']
nompropre =  [ 'Italie','Jul' ]
articles = ['la','le']
pronomspersonnel = ["Je","J'"]
pronoms = ['moi','que','ses','quoi'] 
verbe = ["aime","est","vais","danser","calisse","veux","fusse","glissait","sortez","avais","ai reve","fuit","dit","tour","tombe","taaJAIjAaSK$"]
qualificatif = ['pistou','couvert',]
 
vers1 = random.choice(articles) + " " + random.choice(noms) + " " + random.choice(qualificatif)+ " " + random.choice(verbe) + " " + random.choice(ponctuation)
vers2 = random.choice(pronomspersonnel) + " " + random.choice(verbe) + " " + random.choice(articles) + " " + random.choice(noms) + " " + random.choice(qualificatif) + " " + random.choice(ponctuation)
vers3 = random.choice(articles) + " " + random.choice(noms) + " " + random.choice(qualificatif) + " " + random.choice(verbe)
vers4 = random.choice(pronomspersonnel) + " " + random.choice(verbe) + " " + random.choice(articles) + " " + random.choice(noms) + " " + random.choice(ponctuation)
vers5 = random.choice(verbe)  + " " + random.choice(pronomspersonnel) + " " + random.choice(articles) + " " + random.choice(noms)
vers6 = random.choice(verbe)  + " " + random.choice(pronomspersonnel) + " " + random.choice(articles) + " " + random.choice(noms) + " " + random.choice(qualificatif) 
vers7 = random.choice(nompropre) + " " + random.choice(verbe) + " " + random.choice(articles) + " " + random.choice(noms)
vers8 = random.choice(nompropre) + " " + random.choice(verbe) + " " + random.choice(articles) + " " + random.choice(noms) + " " + random.choice(ponctuation)
vers9 = random.choice(nompropre) + " " + random.choice(verbe) + " " + random.choice(articles) + " " + random.choice(noms) + " " + random.choice(qualificatif)
vers10 = random.choice(nompropre) + " " + random.choice(verbe) + " " + random.choice(articles) + " " + random.choice(noms) + " " + random.choice(qualificatif) + " " + random.choice(ponctuation)
vers11 = random.choice(pronoms) + " " + random.choice(pronomspersonnel) + " " + random.choice(verbe) + " " + random.choice(articles) + " " + random.choice(noms)+ " " + random.choice(qualificatif) + " " + random.choice(ponctuation)
vers11 = random.choice(pronoms) + " " + random.choice(pronomspersonnel) + " " + random.choice(verbe) + " " + random.choice(articles) + " " + random.choice(noms)+ " " + random.choice(qualificatif)
vers12 = random.choice(pronoms) + " " + random.choice(pronomspersonnel) + " " + random.choice(verbe) + " " + random.choice(articles) + " " + random.choice(noms)
vers13 = random.choice(pronoms) + " " + random.choice(pronomspersonnel) + " " + random.choice(verbe) + " " + random.choice(articles) + " " + random.choice(noms) + " " + random.choice(ponctuation)
 
structures = [ vers1 , vers2 , vers3 , vers4 , vers5 , vers6 , vers7 , vers8 , vers9 , vers10 , vers11 , vers12 , vers13 ]
 
rendu = random.choice(structures)
 
print(rendu)

Cours du 23 novembre 2020

# -*- coding: utf-8 -*-
import time
#un programme qui demande à l'utilisateur le numero de la ligne qu'il n'aime pas, puis la supprime
 
with open('poyeme.txt') as fichier:
    poyeme = fichier.read()
 
lignes = poyeme.splitlines()
print(lignes)
 
#1 demande quelle ligne 
print ("Dites moi le numéro de la ligne que vous n'aimez pas ?")
 
numero = input ()
numero = int(numero)
 
lignes = poyeme.splitlines()
 
print (lignes [numero - 1])
 
ligne = lignes [numero - 1]
 
time.sleep(2)
print ("D'accord, je vais remédier à cela")
time.sleep(2)
 
#2 Remplacement de la ligne par du vide
poyeme = poyeme.replace(ligne + "\n","")
 
print(poyeme)
#Un programme qui supprime tous les "e"
 
with open('text.txt','r') as file:
    text = file.read()
 
 
text = text.lower()
 
#text.replace("e","")
 
voldemort = 'e'
 
prophetie = ''
 
for bla in text :
    if bla == voldemort:
        prophetie = prophetie + "la lettre dont on ne prononce le son"
    else :
        prophetie = prophetie + bla
 
print(prophetie)


#un programme qui demande à l'utilisateur une lettre puis répértorie tout les mots commençant par celle-ci
 
with open("poyeme.txt" , 'r') as file :
 poyeme = file.read()
 
print ('Choisis une lettre !')
 
lettres1 = input ()
 
listemots = poyeme.split()
 
for mot in listemots:
	if mot[0] == lettres1:
		print(mot)


#Un programme qui supprime toutes les voyelles
 
with open("poesie.txt" , 'r') as file :
    poyeme = file.read()
 
voyelles = [ 'a', 'e', 'i', 'o', 'u' ]
 
 
 
for lettre in voyelles :
    poyeme = poyeme.replace(lettre, '')
 
print(poyeme)

Cours du 16 novembre 2020

Le poème converti en texte:

J'aime la soupe pistou
Le J c'est le s
L'alcool!est!mort
Je vais danser En Italie
Calisse moi la
Chien de la casse
Je veux te voir tout nu youpi
Quoi que je fusse,savon glissait.
MESSAGE D'ALERTE, SORTEZ COUVERT!
Dans ses deboires
L'a=our d'un soir
J'ai reve que J'avais un!GQSK.
Mon plafond fuit,
mauX dit,taudis
Le chemin tour .Le pieton tombe
Je taaJAIjAaSK$
with open('src.txt', 'r') as fichier:
    poyeme = fichier.read()
 
#print(poyeme)
 
lignes = poyeme.splitlines()
 
print(lignes)
 
print(lignes[1])
import random
 
#changer les consonnes en voyelles de manière aléatoire
with open('src.txt', 'r') as fichier:
    poyeme = fichier.read()
 
#1 on définit ce que sont les voyelles
voyelles = ['a', 'e', 'i', 'o', 'u']
 
poyeme_modifie = ''
 
#2 on parcourt chaque lettre du poème
for lettre in poyeme:
    print(lettre)
 
    #3 pour chaque lettre, on vérifie si elle est présente dans le tableau voyelles
    if lettre not in voyelles:
        #4 si elle n'est pas présente, alors on la remplace par une lettre au hasard du tableau voyelles
        poyeme_modifie = poyeme_modifie + random.choice(voyelles)
    else:
        poyeme_modifie = poyeme_modifie + lettre
 
print(poyeme_modifie)
import random
 
#changer les consonnes en voyelles de manière aléatoire
with open('src.txt', 'r') as fichier:
    poyeme = fichier.read()
 
poyeme = poyeme.lower()
 
#1 on définit ce que sont les voyelles
voyelles = ['a', 'e', 'i', 'o', 'u', 'y']
 
#2 on définit ce que sont les consonnes
consonnes = ['z','r','t','p','q','s','d','f','g','h','k','l','j', 'm','w','x','c','v','b','n']
 
 
#3 on parcourt le tableau de consonnes
for consonne in consonnes:
    #4 pour chaque consonne, on la remplace dans le poyeme par une voyelle au hasard
    poyeme = poyeme.replace(consonne, random.choice(voyelles))
 
print(poyeme)
#un programme qui demande à l'utilisateur le numero d'une ligne, puis qui mélange tous les mots de cette ligne
import time
import random
 
 
with open("poesie.txt" , 'r') as file :
 poyeme = file.read()
 
print ('Donnez un numéro de ligne')
 
numero = input ()
numero = int(numero)
 
lignes = poyeme.splitlines()
 
print (lignes [numero - 1])
 
ligne = lignes [numero - 1]
 
print ('mélangeons tout ça')
 
 
mots = ligne.split()
 
random.shuffle(mots)
 
resultat = " ".join(mots)
 
print(resultat)
#Un programme qui rapporte le nombre de voyelle dans une ligne spécifiée par l'utilisateur
 
with open("poyeme.txt" , 'r') as file :
 poyeme = file.read()
 
print ('Choisis un numéro de ligne!')
 
numero = input ()
numero = int(numero)
 
lignes = poyeme.splitlines()
 
ligne = lignes [numero - 1]
 
print (lignes [numero - 1])
compteur =  0
for lettre in ligne:
 
     if lettre in voyelles:
     	compteur = compteur+1
 
print(compteur)

Cours du 19 octobre 2020

# -*- coding: utf-8 -*-
#un script qui épelle un prénom dans un sens puis dans un autre puis qui affiche les deux premières lettres puis la deuxième et la troisième lettre
import time
print("Qui est-ce?")
 
name = input()
#name = raw_input()
 
nameLength = len(name)
 
#  0   1   2
#['T'|'O'|'M']
 
#print(name[1])
 
for compteur in range(0, nameLength):
    print("Donnez-moi un " + name[compteur])
    time.sleep(1)
 
for compteur in range(nameLength-1, -1, -1):
    print("Donnez-moi un " + name[compteur])
    time.sleep(1)
 
print(name[0:1])
print(name[1:2])
 
 
print(name+"!")

Cours du 12 octobre 2020

age.py

# -*- coding: utf-8 -*-
 
print("Quel âge as-tu?")
 
age = input()
age = int(age)
#age = raw_input()
 
print("Le double de ton age c'est " + str(age * 2))
 
# < > <= >= == != 
if age < 10:
    print("Oh ben t'es tout petit")
    print("Mais c'est pas grave")
elif age < 20:
    print("Oh ben t'es tout jeune")
elif age < 30:
    print("Oh ben t'es presque tout vieux")
else:
    print("Oh ben t'es presque mort")

chats.py

# -*- coding: utf-8 -*-
import time
 
print("Combien de petits chats?")
 
nbChats = input()
 
nbChats = int(nbChats)
 
 
for compteur in range(1, nbChats + 1):
    print(str(compteur) + " petits chats")
 
 
    time.sleep(1)
 
print("C'est fini")

Cours du 28 septembre 2020

Exercice : poésie binaire

Chaque étudiant.e écrit sur un pad commun au moins deux vers de 4 pieds en binaire en utilisant le tableau de conversion ASCII suivant: USASCII_code_chart.png

Du code Morse à l'ASCII

Voir: slides 01: texte et code

1. INTERNATIONAL MORSE CODE, HAND SENDING - https://archive.org/details/gov.archives.arc.36813 Department of Defense. Department of the Army. Office of the Chief Signal Officer. (09/18/1947 - 02/28/1964)

  • Le code morse, inventé par Samuel F. B. Morse en 1832.
  • Directions pour tracer les lettres
  • Les confusions possibles si l'opérateur fait une erreur de rythme

2. TM 11-459 International Morse Code (Instruction) - 1959 - https://archive.org/details/Tm11-4591957/page/n3

  • Le télégraphe "a contribué plutôt à lier inextricablement la technologie et la place de l'humain" (K. Hayles - Lire et penser en milieux numériques p. 223)

3. Direct service guide for telegraphic cipher - 1939 - https://archive.org/details/directservicegui00sldu/page/20

  • Premier objectif: la compression (pour des raisons économiques)
  • 2e objectif: la discrétion
  • 3e objectif: le controle des erreurs

4. Bentley's second phrase code - 1929 - https://archive.org/details/bentleyssecondph00bent/page/778

  • Les codes ne sont plus liés au langage naturel

5. Idem

  • Ici, un "tableau de mutilation" qui permet de corriger un code mal transmis (qui contient une erreur d'une lettre)

6. Teleprinter n°7 - Creed & Company - 1930

  • Frederick G. Creed, inventeur du téléscripteur (vers 1910), ancien télégraphiste, canadien

7. Un exemple de téléscripteur - 1932, Londres

8. Code baudot - 1888

  • Un encodage des caractères sur 5 chiffres, 5 bits
  • Utilisé (dans des versions ultérieures) sur les premiers téléscripteurs
  • Nécessité de définir une vitesse de modulation, "baudrate" en anglais, qui définit le nombre de symboles envoyés en 1 seconde -> la question du début et de la fin!
  • Donald Murray adapte le code baudot en 1902 et attribue aux lettres les plus utilisées de l'alphabet les positions impliquant le moins de trous
  • En 1924, adaptation du code baudot-Murray par l'organisme International Telegraph Union en International Telegraph Alphabet No. 2 (ITA2)

9. ASCII - American Standard Code for Information Interchange - 1963 - pré 1971

  • sur 7 bits

Déroulement du cours

Le cours ne nécessite aucun prérequis si ce n'est une capacité d'attention pendant les séances. Cette attention implique qu'à certains moments, par exemple lors des moments de discussions ou de présentations, il sera demandé aux étudiant.e.s de fermer leur ordinateur, que l'usage des smartphones est interdit et que les étudiant.e.s doivent arriver à l'heure au cours (9h, le lundi matin).

Comme il s'agit d'un cours technique, les travaux se feront majoritairement en classe et il n'est pas absolument nécessaire de travailler en dehors du cours, à part pour documenter les travaux ou préparer leurs présentations (les cotations).

Le cours fonctionne en évaluation continue, ce qui signifie que chaque exercice réalisé en atelier aura une note attribuée. Pour réussir le cours, il faut essentiellement être présent.e.

À cette évaluation continue s'ajoute deux notes en décembre et en mai qui correspondent aux moments de cotations. Il est demandé pour ces cotations de présenter une sélection des travaux réalisés jusque là.

La difficulté technique, bien que présente, ne doit pas constituer une barrière pour assister au cours. Il ne sera pas demandé aux étudiant.e.s d'être performant.e.s mais plutôt de ne pas se braquer et d'accepter d'être inefficaces durant des périodes qui semblent parfois longues (voire trouver du plaisir dans ces périodes de recherches). L'entraide et le partage sont encouragés. Tout sera fait pour éviter des comportements de mise à distance du savoir entre celles et ceux "qui savent" et les "newbies".

Chaque étudiant.e a accès à ce wiki, qui servira durant toute l'année à documenter les travaux. La création des comptes pour le wiki se fait au début du deuxième cours (au moment de l'inscription au cours).