Approche des différents langages de programmation.

Un classement.

Points communs et différences des langages

Les instructions conditionnelles

On retrouve toujours le mot if . La terminaison est différente selon les langages. On retrouve les mots endif ou end if

Les boucles

On retrouve souvent les mots for et while .

Vous retrouvez les différents types qui permettent d'identifier les blocs

La déclaration des variables

Dans ce domaine, il existe de nombreuses différences entre les langages.

Certains langages (comme Python ou PHP) ne demandent pas de spécifier le type des variables.

D'autres langages demandent de spécifier le type.

Les noms utilisés pour typer les variables peuvent être différents d'un langage à l'autre.

Les fonctions

Se reporter au chapitre LP1 sur les fonctions en python. Accès direct

Il y a un mot référencé pour créer une fonction : def ou function . Certains langages font une différence entre fonction et procédure. La fonction retourne une valeur à la différence de la procédure. En python il suffit d'utiliser ou non l'instruction return.

Quelques définitions

Précondition. Il s’agit d’une condition à vérifier avant le début d’un calcul / l’appel d’une fonction afin de pouvoir en garantir le résultat. On pourrait résumer une précondition ainsi : « Donne-moi ce que je veux, tu auras ce que tu attends ». Exemple : avant une division, s’assurer que le dénominateur est non nul.

Postcondition. Il s’agit d’une condition à vérifier à la fin d’un calcul / d’une fonction. Sa vérification induit que le calcul est correct ; et réciproquement, une postcondition non satisfaite correspond à une erreur lors du calcul, généralement due à une erreur de programmation. Exemple : à la fin d’une fonction retournant la valeur absolue d’un nombre, vérifier que le résultat est supérieur ou égal à 0.

On utilise les assertions et les exceptions pour tester les préconditions et les postconditions.

Imaginez le programme suivant (en python) :

a=10
b=0
c=a/b

Le langage python a rencontré une erreur, il lève une exception.

Décryptage de ce message :

Ces traces d'erreur permettent au développeur de corriger le code en comprenant où l'interpréteur à échouer à exécuter le code.

Vous pouvez faire la même chose en choisissant le message d'erreur qui vous semble le plus clair avec l'instruction assert.

a=10
b=0
assert(b!=0), "attention, division par zéro" # On teste le précondition b différent de 0 pour la division par b

c=a/b
La réponse du langage :

L'interpréteur lit ligne à ligne le programme. Lorsqu'il rencontre un assert, il teste la condition écrite juste après ici b!=0. Deux cas :

Vous pouvez gérer les exceptions avec l'instruction try except.

Voici la structure d'un try except:


try:
    instruction(s) exécutées si aucune erreur ne survient
except: # si une erreur est apparue lors de l'exécution du bloc précédent 
    instruction(s) à exécuter si une erreur est survenu dans le bloc try

Voici son utilisation en reprenant l'exemple précédent :

a=10
b=0

try :
    c=a/b
except :
    print("Attention, division par 0")

Lancer le trinket suivant afin de bien comprendre :

Programmer la fonction racine carrée d'un nombre en utilisant math.sqrt(x) de la bibliothèque math. Quelles sont les préconditions et les postconditions de la fonction racine carrée ?

Une plateforme pour s'entraîner.

repl.it pour tester en ligne

En utilisant cette plateforme, concentrer-vous sur les langages suivants : python, Bash Shell ,javascript, PHP et java.

L'année prochaine, vous découvrirez le langage SQL pour la manipulation des bases de données.

Pour le langage du type bash shell, vous pouvez vous connecter sur un système linux pour tester vos codes.

Vous pourrez trouver quelques idées ici : des exemples de shell bash à partir de la page 52.

Vous pouvez au fur et à mesure de vos avancées remplir le tableau suivant :

Fonctionnalités/langages Python Bash/shell javascript php java
Déclaration d'une variable a=4 a=4 $a=4 int a=10
Modification du contenu d'une variable a=10 a=10 $a=10
Affichage print() echo $a
Saisir le contenu d'une variable à la console input()
Identifier un bloc L'indentation précédée de :
Ecrire une fonction def et return
Structure conditionnelle if condition(s) : bloc indenté else : bloc indenté
Structure conditionnelle variante elif
Structure conditionnelle switch case N'existe pas
Boucle itérative for for bloc indenté
Boucle itérative while while bloc indenté
...

Vous retrouvez ce document au format texte : ici

Pour vous aider voici un aperçu de quelques commandes :

Des exercices à traiter

Il ne faut pas oublier à alimenter votre cahier de bord avec de nombreux "screen" et commentaires.

Essayer de traiter les exercices suivants dans trois langages différents.

Afficher la phrase "hello world !"

Traiter l'algorithme suivant :

n=lecture d'un nombre au clavier Pour i←1 à n afficher la phrase "Hello world"

Transformer l'algorithme précédant en créant une fonction affichage avec comme paramètre le nombre n.

Ecrire un programme qui affiche la table de multiplication du nombre 7.

Ecrire un programme qui affiche la table de multiplication d'un nombre entré au clavier.

Ecrire un programme qui calcule et affiche la moyenne de deux nombres entrés au clavier

Quelques solutions en image

Vous retrouverez dans les "screen" ci-dessous différents exemples dans différents langages pour vous aider. Les "screen" proviennent de repl.it en ligne

  • Licence Creative Commons
    NSI de Auteurs : Jean-Christophe Gérard, Thomas Lourdet, Johan Monteillet, Pascal Thérèse est mis à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.