PyGre.io

Découverte de la programmation

Remerciements

Présentations

Quelques clichés

Pourquoi ?

Internet of Things

Machines > Humains

  • Rapidité
  • Répétition sans erreur
  • Grandes quantités de données

Le problème ?

Comment se faire comprendre ?

Communiquer

Comment les machines "pensent" elles ?

Tout n'est que chiffres

Images

Couleur = RGB (Red, Green, Blue)

Texte

72 101 108 108 111 44 32 87 111 114 108 100 32 33
H  e   l   l   o   ,     W  o   r   l   d      !

ASCII: Conversion caractère <=> nombre

Unicode: gestion des caractères spéciaux,

accents, pictogrammes, emojis...

Syntaxe:

le binaire

0010101101001001001100110010011001010010010010011101100

Comment les machines voient les nombres

Décimal (base 10)

394

= 3*10^2 + 9*10^1 + 4*10^0
=3102+9101+4100= 3*10^2 + 9*10^1 + 4*10^0
= 3*100 + 9*10 + 4*1
=3100+910+41= 3*100 + 9*10 + 4*1
= 3*B^2 + 9*B^1 + 4*B^0
=3B2+9B1+4B0= 3*B^2 + 9*B^1 + 4*B^0
2 1 0 Index
3 9 4 Valeur

Chaque valeur est comprise entre 0 et B-1 (9)

Autres bases communes

Base 12: L'heure

Base 26: L'alphabet

Pourquoi le binaire ?

Chaque valeur vaut soit 0, soit 1.

Raisons électroniques

Logique booléenne = grammaire

Binaire (base 2)

Puissances de 2

1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024 ...

42 = 32 + 8 + 2
42=32+8+242 = 32 + 8 + 2
42 = 1*32 + 0*16 + 1*8 + 0*4 + 1*2 + 0*1
42=132+016+18+04+12+0142 = 1*32 + 0*16 + 1*8 + 0*4 + 1*2 + 0*1
5 4 3 2 1 0 Index
32 16 8 4 2 1 2^i
1 0 1 0 1 0 Valeur
42 = \color{orange}{1}*2^\color{yellowgreen}{5} + \color{orange}{0}*2^\color{yellowgreen}{4} + \color{orange}{1}*2^\color{yellowgreen}{3} + \color{orange}{0}*2^\color{yellowgreen}{2} + \color{orange}{1}*2^\color{yellowgreen}{1} + \color{orange}{0}*2^\color{yellowgreen}{0}
42=125+024+123+022+121+02042 = \color{orange}{1}*2^\color{yellowgreen}{5} + \color{orange}{0}*2^\color{yellowgreen}{4} + \color{orange}{1}*2^\color{yellowgreen}{3} + \color{orange}{0}*2^\color{yellowgreen}{2} + \color{orange}{1}*2^\color{yellowgreen}{1} + \color{orange}{0}*2^\color{yellowgreen}{0}
number = int(input("Enter a number:"))

print(bin(number))

Décomposition Binaire

Qu'est-ce qu'un programme ?

def sayHello(name):
    print("Hello, " + name + " !")


sayHello("World")
011010011101001000101001011010
101101110100110111011100110110
101110111011110110101100111011
011010011101001000101001011010
101101110100110111011100110110
101110111011110110101100111011
011010011101001000101001011010
011010011101001000101001011010

Code Source

Exécutable

Python, C/C++, Ruby, JavaScript, ...

PC, Mac, iOS, Android

...

Les composantes d'un programme

Variables

foo = 12
bar = 42


result = foo + bar    # result = 54




foo = 1234
bar = 0.25


result = foo * bar    # result = 308.5




result = foo - spam

Donner un nom à une chose

Réutilisation (DRY)

Recyclable

Doivent être déclarées

NameError: name 'spam' is not defined

Types de variables

Nombres Entiers (1, 2, 42, 394, ...)

Nombres Réels (1.2345, π, ...)

Booléens (True, False)

int
float
bool

Texte ("Hello, World !")

str
foo = 42
foo = 12.34
foo = True
foo = "Hi!"

Texte = séquence de caractères

Conditions & Logique

numberToFind = 42


guess = int(input("Enter a number:"))


if guess == numberToFind:
    print("Bingo !")

elif guess > numberToFind:
    print("Too high, try again.")

else:
    print("Too low, try again.")

Boucles

numberToFind = 42

guess = int(input("Enter a number:"))

while guess != numberToFind:
  
    if guess > numberToFind:
        guess = int(input("Too high, try again:"))
  
    elif guess < numberToFind:
        guess = int(input("Too low, try again:"))
    

print("Bingo!")

Atelier

number = int(input("Enter a number between 0 and 999:"))

v2 = int(number / 100)
v1 = int((number - v2 * 100) / 10)
v0 = int(number - v2 * 100 - v1 * 10)

print(v2, v1, v0)

Décomposition Décimale

Un peu d'histoire

Jacquard

1801 - Lyon (La Soie)

 

Invente le métier à tisser programmable

 

Utilisation de cartes à trous

pour les motifs

Charles Babbage

XIXe Siècle - Angleterre

 

Mathématicien & Mécanicien

 

Inventeur de "l'ordinateur" programmable

Ada Lovelace

XIXe Siècle - Angleterre

 

Mathématicienne

 

Pionnière des maths de la

programmation

 

Première développeuse

 

Le langage Ada porte son nom

George Boole

XIXe Siècle - Angleterre

 

Mathématicien

 

Logique Booléenne

Alan Turing

XXe Siècle - Angleterre

 

Mathématicien & analyste

 

Invente la Machine de Turing,

ancêtre de nos ordinateurs

 

Test de Turing (IA)

 

CF: The Imitation Game (2014)

Grace Hopper

1947 - US Army

 

Invente le premier compilateur

 

Machine-independent program

 

Découvre le premier "bug"

Et bien d'autres...

Tim Berners-Lee

Bill Gates

Steve Jobs

Richard Stallman

Linus Torvalds

Bjarne Stroustrup

Guido van Rossum

Invente Internet

Crée Microsoft Windows

Crée Apple

Fonde GNU & compilateur C

Crée Linux

Crée le langage C++

Crée langage Python

 

PyGre.io 2017-01-18

By François Best

PyGre.io 2017-01-18

  • 377