Introduction à la programmation

Aymeric LAMBOLEY

Parcours

Down arrow

Formation

  • IUT SRC Montbéliard (ex-MMI)
  • Université de Technologie de Belfort-Montbéliard
  • Les Gobelins, l'école de l'image à Annecy (concepteur réalisateur multimédia)

Professionnel

  • Développeur Web (Flash)
  • Freelance
  • Président et Directeur Technique à Da Viking Code

Da Viking Code

Down arrow

Société de programmation pour applications interactives et ludiques.

  • 6 programmeurs
  • Jeux videos (mobile, desktop, web)
  • Applications mobiles
  • Installations interactives : VR & AR
  • Applications métiers et industriels

Technologies

  • Unity 3D
  • WebGL - Pixi.js - Three.js
  • PHP Laravel - Node.js
  • Processing
  • Haxe

Références

Sommaire

  1. À l'origine, l'algorithmie
  2. La programmation, c'est fun
  3. Le pseudo code
  4. Les variables et types
  5. Les conditions
  6. Les boucles
  7. Les langages de programmation
  8. Le compilateur
  9. Environnement de développement
  10. Processing et Java
  11. Du code !
  12. Les tableaux
  13. Les fonctions

L'algorithmie

Le mot « algorithme » vient du nom du mathématicien Al-Khwârizmî (latinisé au Moyen Âge en Algoritmi), qui, au IXe siècle écrivit le premier ouvrage systématique donnant des solutions aux équations linéaires et quadratiques. « Algorithme » a donné « algorithmique ». On trouve aussi le synonyme « algorithmie », vieux mot utilisé par exemple par Wronski en 1811.

Les premiers algorithmes remontent au IIIe millénaire av. J.-C. Ils décrivent des méthodes de calcul et des résolutions d'équations à l'aide d'exemples.

Qu'est-ce qu'un algorithme ?

Qu'est-ce qu'un algorithme ?

Un algorithme représente une suite finie et non ambiguë d'instructions.

Les algorithmes sont partout : de la recette de cuisine au GPS.

L'algorithme d'Euclide

Différents algorithmes permettent d'arriver au même résultat.

Qu'est-ce que la programmation ?

“Il n’y aura bientôt plus que deux types de personnes sur Terre, ceux qui donneront des ordres à l’ordinateur et ceux à qui l’ordinateur dira ce qu’ils doivent faire.” - Marc Andreessen

Qu'est-ce que la programmation ?

Retranscrire dans un langage compréhensible par une machine (ordinateur, smartphone, tv, voiture...) des algorithmes.

La programmation c'est fun !

À notre niveau

Le pseudo code

Il permet avec un crayon et une feuille de papier d'écrire des algorithmes.

Aucune syntaxe / convention officielle.

Les variables et types

Down arrow

Qu'est-ce qu'une variable ?

Une variable est un espace de stockage, temporaire, d'une donnée.

Elles n'existent que pendant la durée d'exécution de notre programme.

Elles sont utilisées afin de sauvegarder temporairement un résultat.

Exercice 1

Quelles seront les valeurs des variables A et B après exécution des instructions suivantes ?

Variables A, B en Entier
Début
A ← 1
B ← A + 3
A ← 3
Fin
A = 3	B = 4

Exercice 2

Quelles seront les valeurs des variables A, B et C après exécution des instructions suivantes ?

Variables A, B, C en Entier
Début
A ← 5
B ← 3
C ← A + B
A ← 2
C ← B – A
Fin
A = 2	B = 3	C = 1

Exercice 3

Quelles seront les valeurs des variables A et B après exécution des instructions suivantes ?

Variables A, B en Entier
Début
A ← 5
B ← A + 4
A ← A + 1
B ← A – 4
Fin
A = 6	B = 2

Exercice 4

Quelles seront les valeurs des variables A, B et C après exécution des instructions suivantes ?

Variables A, B, C en Entier
Début
A ← 3
B ← 10
C ← A + B
B ← A + B
A ← C
Fin
A = 13	B = 13	C = 13

Exercice 5

Quelles seront les valeurs des variables A et B après exécution des instructions suivantes ?

Variables A, B en Entier
Début
A ← 5
B ← 2
A ← B
B ← A
Fin
A = 2	B = 2

Exercice 6

Écrire un algorithme permettant d’échanger les valeurs de deux variables A et B, et ce quel que soit leur contenu préalable.

Début
...
C ← A
A ← B
B ← C
Fin

Création d'une variable temporaire C.

Exercice 7

On dispose de trois variables A, B et C. Ecrivez un algorithme transférant à B la valeur de A, à C la valeur de B et à A la valeur de C (toujours quels que soient les contenus préalables de ces variables).

Début
...
D ← C
C ← B
B ← A
A ← D
Fin

Une seule variable temporaire suffit...

Qu'est-ce qu'un type ?

Type Exemple
Entier 5
Réel -2.75
Chaîne de caractères "hello world"
Booléen true

Un type permet de préciser le contenu attendu dans une variable.

En général on effectue des opérations avec des variables de même type.

Exercice 8

Quelle sera la valeur de la variable A après exécution des instructions suivantes ?

Variables A Entier, B Chaîne de caractère
Début
A ← 5
B ← "2"
A ← A + B
Fin
A = "52"

Exercice 9

Écrire un programme qui lit le prix HT d’un article, le nombre d’articles et le taux de TVA, et qui fournit le prix total TTC correspondant. Faire en sorte que des libellés apparaissent clairement.

Variables nb, pht, ttva en Réel
Début
Ecrire "Entrez le prix hors taxes :"
Lire pht
Ecrire "Entrez le nombre d’articles :"
Lire nb
Ecrire "Entrez le taux de TVA :"
Lire ttva
Ecrire "Le prix toutes taxes est : " + (nb * pht * (1 + ttva))
Fin

Les conditions

Down arrow

Les conditions

Difficile d'imaginer des algorithmes complexes dont le déroulé serait identique en toute circonstance.

Un bon algorithme doit être capable de s'adapter à des variables durant son exécution.

La solution est d'ajouter des instructions conditionelles qui vont effectuer des tests à des moments clefs de notre programme.

Si... alors... sinon...

Exercice 1

La machine choisit aléatoirement soit 0 soit 1. Faire un programme qui lit un chiffre en entrée et détermine si c'est le bon.

Variables nbrToFind, saisie en Réel
Début
nbrToFind ← Aléatoire(0, 1)
Lire saisie
Si saisie = nbrToFind
	Ecrire "Correct"
Sinon
	Ecrire "Incorrect"
FinSi
Fin

Exercice 2

La machine tire un nombre entre 0 et 100. Écrire un algorithme qui vous permet de déterminer ce nombre.

Variables nbrToFind, saisie, min, max en Réel
nbrToFind ← 42
min ← 0
max ← 100
Lire saisie
Si saisie = nbrToFind
	Ecrire "Le nombre a trouvé était bien : " + nbrToFind
Sinon
	Si saisie < nbrToFind
		min ← saisie
	Sinon saisie > nbrToFind
		max ← saisie
	FinSi
	Ecrire "L'intervalle est désormais compris entre : " + min + " et " + max
FinSi

Exercice 3

Vous pensez à un chiffre entre 0 et 100 la machine doit le deviner. Répondez lui par "+", "-", ou "=".

Variables min, max, estimatedNbr en Réel, saisie en Chaîne de caractères
estimatedNbr ← 50
Ecrire "Le nombre est : " + estimatedNbr
Lire saisie
Si saisie = "="
	Ecrire "J'ai gagné !"
Sinon si saisie = "+"
	estimatedNbr ← estimatedNbr + 1
Sinon si saisie = "-"
	estimatedNbr ← estimatedNbr - 1
FinSi

Exercice 4

Les habitants de Zorglub paient l’impôt selon les règles suivantes :

  • les hommes de plus de 20 ans paient l’impôt
  • les femmes paient l’impôt si elles ont entre 18 et 35 ans
  • les autres ne paient pas d’impôt

Le programme demandera donc l’âge et le sexe du Zorglubien, et se prononcera donc ensuite sur le fait que l’habitant est imposable.

Exercice 4 - corrigé

Variables sex en Chaîne de caractères, age en Entier,
Début
Ecrire "Entrez le sexe (M/F) : "
Lire sex
Ecrire "Entrez l’âge : "
Lire age
Si ((sex = "M" ET age > 20) OU (sex = "F" ET age >= 18 ET age <= 35))
	Ecrire "Imposable"
Sinon
	Ecrire "Non Imposable"
FinSi
Fin

Les boucles

Down arrow

Qu'est-ce qu'une boucle ?

Indispensable en algorithmie, elle permet de marquer une temporalité et une redondance Tant que... faire.

Elle est toujours soumise à une condition.

Exercice 1

Calculer le factoriel de 5. Pour rappel 5! = 5 * 4 * 3 * 2 * 1.

Variables resultat, passage en Entiers
Début
passage ← 1
resultat ← 1
TantQue passage <= 5
	resultat ← resultat * passage
	passage ← passage + 1
FinTantQue
Fin

La boucle pour

La plus utilisée en algorithmie, elle permet de créer une variable locale, son pas, et sa condition.

Pour ma variable i = 0, i < 4, avec un pas de i + 1 faire.

Exercice 2

Calculer le factoriel de 6 avec une boucle pour.

Variables resultat en Entiers
Début
resultat ← 1
Pour i ← 1, i ⩽ 6, i ← i + 1
	resultat ← resultat * i
FinPour
Fin

Exercice 3

Calculer le factoriel de 3 avec une boucle for et un pas décroissant.

Variables resultat en Entiers
Début
resultat ← 1
Pour i ← 3, i ⩾ 1, i ← i - 1
	resultat ← resultat * i
FinPour
Fin

Les langages de programmation

Down arrow

Le premier programmeur de l'histoire

Ada LOVELACE 1815 - 1852

Le test de Turing

Alan TURING 1912 - 1954

Les langages de programmation

Il existe des centaines de langages de programmation, vous pouvez même créer le votre.

Ils sont souvent spécifiques par rapport à un secteur d'activité.

Lorsqu'on évoque les langages de programmation on parle de niveaux :

  • bas niveau - proche de la machine
  • haut niveau - proche de l'application

Il existe des familles de langages avec de nombreuses caractéristiques partagées.

L'importance n'est pas le langage en lui même mais les principes derrières qu'on retrouvera sur d'autres.

Ainsi un bon développeur doit être en capacité d'être opérationnel avec un autre langage en peu de temps.

Les langages de programmation

Ils permettent de dialoguer avec l'ordinateur.

En fonction du niveau, ce sera avec ses composants directement (carte graphique, carte mère...) ou le système d'exploitation.

Certains langages sont directement interprétés, dans un contexte précis, par l'ordinateur, d'autres doivent être compilés c'est à dire transformer au format binaire.

Le compilateur

Il permet de transformer du code, en un applicatif binaire compréhensible par l'ordinateur.

    Cette opération permet :
  • optimiser le code écrit par le développeur.
  • aider le développeur à corriger ses erreurs de syntaxes.

Il est en général directement fourni avec l'Environnement de développement (IDE).

Environnement de développement

Il existe de nombreux IDEs propres a un ou plusieurs langages, ceci en fonction de notre OS.

    Un IDE a pour but :
  • fournir tous les outils nécessaires au développement d'un programme dans une technologie précise.
  • assister le développeur en lui fournissant des templates de code, des raccourcis.
  • vérifier en temps réel la syntaxe qu'il écrit.

Citons Visual Studio (Code), et la suite JetBrains pour les plus connus.

A noter qu'il est toujours pratique d'avoir un petit éditeur de texte comme Notepad++ ou VS Code sous la main.

Processing et Java

Down arrow

Processing

Processing est un logiciel gratuit et open-source pour réaliser des "croquis interactifs".

Il permet d'apprendre à coder dans un contexte artistique appliqué, c'est un canevas dans lequel on peint avec du code.

Il a également été conçu pour manipuler facilement des fichiers audios, vidéos...

Java

Java est un des langages les plus populaires au monde. De nombreux appareils fonctionnent avec java : des serveurs internet, de nombreux logiciels, Minecraft, peut-être votre GPS...

Java est un langage compilé, haut-niveau, qui fonctionne dans un contexte d'exécution de machine virtuelle, ainsi il est "sandboxé".

Java est cross-plateform : disponible sur pratiquement tous les OS du monde.

Processing et Java

    Nous avons fait ce choix technologique pour :
  • Apprendre la programmation dans un contexte artistique afin de la rendre fun et la plus accessible possible.
  • Avoir un langage de programmation référent qui grâce à son compilateur va vous aider dans l'apprentissage de la programmation (si, si...).

Du code !

Down arrow

Du code !

print("Hello World !!");

Les types primitifs

String nom = "Aymeric";
boolean isMale = true;
int year = 2020;
float pi = 3.14;

Les commentaires

// int year = 2020;
/*boolean isMale = true;
int year = 2020;*/

Les tableaux

Down arrow

Les tableaux

Les tableaux permettent de contenir dans une même variable plusieurs valeurs.

Outre des valeurs, un tableau peut également contenir des variables.

L'intérêt d'un tableau est de pouvoir effectuer des opérations sur de nombreux éléments via des boucles.

int[] tab = { 2, 7, 3 };

En java, les tableaux ont une taille fixe. Pour une taille dynamique nous utiliserons des ArrayList.

Les tableaux

Parcours d'un tableau :

int[] tab = { 2, 7, 3 };
for (int i = 0; i < tab.length; i++)
{
	println("La valeur dans mon tableau à l'indice " + i + " est de " + tab[i]);
}

Les fonctions

Down arrow

Les fonctions

Elles permettent de commencer à découper/organiser notre code dans des blocs précis.

Une fonction possède un nom, une signature et un type de retour.

int calculFactoriel(int factoriel) {

	int resultat = 1;
	for (int i = 1 ; i <= factoriel; i++)
	{
		resultat *= i;
	}

	return resultat;
}

La portée des variables

Une variable appartient à un scope.

La variable i d'une boucle for n'existe pas en dehors.

Une variable définie dans une fonction n'existera pas en dehors de cette fonction.