Apprendre COBOL – Tutorial pour apprendre le COBOL

Apprendre COBOL, ce tutorial présente les concepts généraux liés à la structure d’un programme en COBOL.

Apprendre COBOL – Introduction

Cette article fait suite à mon introduction au langage COBOL. Je vous conseille de relire la première partie qui traite des principes généraux de COBOL. Ici : https://128mots.com/index.php/2020/10/07/ibm-cobol/ et en anglais https://128mots.com/index.php/en/2020/10/07/ibm-cobol-3/

Nous traitons ici les concepts généraux liés à la structure d’un programme en COBOL.

DATA DIVISION

Toutes les données qui vont être utilisées par le programme sont situées dans la Data Division . C’est l’endroit où toutes les allocations de mémoire requises par le programme sont prises en charge. Cette division est facultative.

GESTION DES FICHIERS :

apprendre cobol

La FILE SECTION décrit les données envoyées ou provenant du système, en particulier les fichiers.

Lorsqu’on apprend COBOL la syntaxe est trèc importante. La syntaxe en COBOL est la suivante

DATA DIVISION.
FILE SECTION.
 FD/SD NameOfFile 
	[RECORD CONTAINS intgr CHARACTERS] 
	[BLOCK CONTAINS intgr RECORDS]
	[DATA RECORD IS NameOfRecord].
	[RECORDING MODE IS {F/V/U/S}]

FD décrit les fichiers et SD les fichiers de tri.

FICHIER EN ENTRÉE

En FILE-CONTROL la déclaration sera :

           SELECT FMASTER      ASSIGN FMASTER
                  FILE STATUS  W-STATUS-FMASTER.

Si le fichier d'entrée est indexée:
           SELECT FMASTER      ASSIGN FMASTER
                  ORGANIZATION IS INDEXED
                  RECORD KEY   IS FMASTER-KEY
                  FILE STATUS  W-STATUS-FMASTER..

Dans ce cas au niveau de la FILE-SECTION on va avoir :

      *    FMAITRE en entrée  
       FD  FMAITRE.
       01  ENR-FMAITRE.
      *    Déclarations des zones de l’enregistrement

Au niveau JCL la déclaration sera de la forme :
//ENTREE    DD DSN=SAMPLE.INPUTF,DISP=SHR
IBM COBOL TRAINING FREE apprendre cobol

FICHIER EN SORTIE

La déclaration JCL sera alors :

//OUTFILE   DD DSN=SAMPLE.OUTPUTF,DISP=(,CATLG,DELETE),
//       LRECL=150,RECFM=FB

RECFM spécifie les caractéristiques des enregistrements avec longueur fixe (F), longueur variable (V), longueur variable ASCII (D) ou longueur indéfinie (U). Les enregistrements qui sont dit bloqués sont décrits comme FB, VB ou DB.

OUVERTURE ET FERMETURE FICHIER EN PROCEDURE DIVISION

COBOL utilise des mécanismes en PROCEDURE DIVISION pour effectuer des lecture écriture, fermeture et ouverture de fichier.

Ouverture de fichier d’entrée :

OPEN  INPUT               FICENT

Ouverture de fichier de sortie :

OPEN OUTPUT          FICSOR

Fermeture de fichier :

CLOSE FICENT
CLOSE FICSOR

Lecture de fichier:

READ ACTENR
AT END MOVE 'O' TO DERNIER-ENREGISTREMENT
END-READ

Ecriture fichier

WRITE SOR-ENR
IBM COBOL TRAINING FREE apprendre cobol

Apprendre COBOL – LIENS EXTERNES VERS DES RESSOURCES

Ci-dessous quelques liens que j’ai trouvé intéressants qui traitent également de la gestion des fichiers avec COBOL.

Exemple de gestion de fichier du site IBM : https://www.ibm.com/support/knowledgecenter/en/SS6SGM_5.1.0/com.ibm.cobol51.aix.doc/PGandLR/ref/rpfio13e.html

REFM Format : https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.2.0/com.ibm.zos.v2r2.idad400/d4037.htm

Tutorialspoint un article sur la gestion fichier https://www.tutorialspoint.com/cobol/cobol_file_handling.htm

COURSERA COBOL with VSCODE : https://www.coursera.org/lecture/cobol-programming-vscode/file-handling-YVlcf

MEDIUM un article intéressant pour les débutants COBOL : https://medium.com/@yvanscher/7-cobol-examples-with-explanations-ae1784b4d576

Egalement sur son blog : http://yvanscher.com/2018-08-01_7-cobol-examples-with-explanations–ae1784b4d576.html

Beaucoup d’exemple COBOL de tutoriaux et sample code gratuits : http://www.csis.ul.ie/cobol/examples/default.htm

GITHUB Awesome-cobol vous https://github.com/mickaelandrieu/awesome-cobol

Apprendre COBOL – LIENS INTERNES

IBM COBOL FREE TRAINING

Apprendre le COBOL – Tutorial pour apprendre COBOL

Apprendre COBOL est un ensemble de connaissances très intéressants. COBOL (COmmon Business Oriented Language) est un langage orienté métier il est très adapté pour le traitement de données avec des hautes performances et précisions, il est proposé par IBM.

Introduction – Apprendre le COBOL

Vous pouvez être sur que tous les achats ou retraits que vous faites avec votre carte bancaire démarre un programme en COBOL. Chaque jours COBOL traite des millions de transactions. De mon point de vue apprendre COBOL est un ensemble de connaissances très intéressants.

J’ai travaillé plus de 10 ans avec ce langage et je partage ici quelques notes qui vous permettrons sans doute de vous faire la main avec.

Le mainframe se modernise avec la possibilité de programmer avec les derniers outils tels que l’éditeur de code libre VsCode etson extension Zowe ainsi que Z Open editor, de s’exécuter dans le cloud dans des environnement tels que Open Shift et d’intégrer les principes devops avec des outils tels que Github, jenkins, Wazi.

Syntaxe COBOL

La syntaxe de COBOL est assez simple et se rapproche du langage naturel en anglais.

Le code est standardisé selon des colonnes qui permettent de décrire 5 zones clés.

Séquence Area : specifie un numéro de sequence de la ligne de code parfois, parfois à blanc

Indicator Area : peut contenir un indicateur par exemple * pour indiquer que la ligne est un commentaire, D pour indiquer que la ligne s’exécute uniquement en debugging mode.

A AREA : Contient les divisions, sections, paragraphes et Levée

B AREA : Sentences et statements du programme cobol for exemple COMPUTE quelques chose…

Identification Area: espace à ignorer et laisser à blanc.

Il y a egalement des mots réservés en COBOL vous trouverez sur le lien la liste des mots réservés en COBOL. https://www.ibm.com/support/knowledgecenter/SSZJPZ_9.1.0/com.ibm.swg.im.iis.ds.mfjob.dev.doc/topics/r_dmnjbref_COBOL_Reserved_Words.html

DIVISIONS :

Le code est structuré par des divisions qui contiennent des Sections composées de Paragraphe eux même constitués par des Sentences et Statements.

Exemple de sentences :

ADD 45 TO PRICE.

A noter que le point corresponds à un terminateur implicite de portée.

Il y a 4 Divisions dans un programmes en COBOL :

– DATA DIVISION : permets de mettre en place la gestion des donnee qui vont être traitees par le programme.

– IDENTIFICATION DIVISION : Nom programme et du du programmeur, date du programme, but du programme.

– ENVIRONEMENT DIVISION : Type d’ordinateur utilise et mapping entre les fichiers utilisé dans le programmes et les dataset sur le système (lien entre le programme et le système)

– PROCEDURE DIVISION : C’est ici qu’est contenu le code métier composé des différents paragraphes à exécuter.

Les variables en Cobol :

Comme dans les autres langages des lettres permettent de représenter des valeurs stockées en mémoire.

Le nom d’une variable est de maximum 30 caractères.

Une clause Picture permet de fixer le type de la variable.

PIC 9 : Numérique la longueur est entre parenthèse.

PIC 9(5) : variable numérique de 5 digits la longueur maximale pour un numérique est 18.

PIC A pour un caractère

PIC X(11) : un alphanumérique avec une longueur maximum de 255

Il est possible d’avoir des types édité au moyen de symboles :

PIC 9(6)V99 pour un numerique de 6 digits et 2 décimales séparés par virgule.

PIC $9,999V99 pour représenter un montant

A noter que COBOL mets à dispositions des literaux constant tels que ZEROES, SPACE, SPACES, LOW-VALUE …

Plus d’information sur ce lien :

https://www.ibm.com/support/knowledgecenter/SS6SG3_4.2.0/com.ibm.entcobol.doc_4.2/PGandLR/ref/rllancon.htm

Si vous débutez sur IBM COBOL et que vous souhaitez faire un apprentissage sérieux et pas trop cher, je vous conseille absolument de lire ce livre :

Ce livre couvre beaucoup de sujet concernant le langage machine, IBM Cobol training, Open Cobol IDE, DB2 pour devenir un véritable Cobol programmers.

Voir aussi mes articles :

Liens internes Apprendre le COBOL

https://128mots.com/index.php/category/python/

Construire une application décentralisée full-stack pas à pas (Ethereum Blockchain Dapp) en plus de 128 mots – Partie 1

Cet article a pour objectif d’expliquer les concepts clés de la blockchain, des dapp (decentralized app), des smart contract et de la tokenisation.

Blockchain

Une blockchain est une base de donnée décentralisée, elle est partagée entre plusieurs nœuds qui possède une copie de cette base de donnée.

Block

Une demande d’ajout de donnée dans la base par un utilisateur est une transaction. Les transactions sont regroupées et ajoutées à un block dans la blockchain.

A noter que toutes les données de ce registre partagé qu’est la blockchain, sont sécurisées par hachage cryptographique et validées par un algorithme qui fait consensus entre les utilisateurs du réseau.

Concept de block dans une blockchain

Mineur

Les mineurs sont des utilisateurs du réseau qui mettent, grâce à un programme, les ressources de leur ordinateur pour valider les nouvelles transactions et les enregistrent sur le registre partagé (blockchain).

Exemple de ferme de mineur équipée pour calculer des transactions sur la blockchain (via la résolution de problème mathématique et cryptographique complexe), les mineurs reçoivent une “récompense” pour leur travail.

Blockchain Ethereum

Ethereum est une plate-forme open source qui utilise la technologie blockchain pour éxecuter des applications décentralisées (dapps).

Cette plateforme se base sur la création de Smart Contract, c’est un programme qui contient des données et des fonctions appelées par des applications.

Se basant sur la blockchain il n’y a pas de base de donnée centralisée mais un registre partagé et maintenu en peer to peer par les utilisateurs.

Cette technologie peut être utilisée pour échanger des devises ou pour créer des applications décentralisées qui appellent des smarts contracts et qui stockent leurs données dans des blocs de la blockchain.

Blockchain publique

Dans une blockchain publique il n’y a pas d’autorisation, tout le monde peut rejoindre le réseau de blockchain, ce qui signifie qu’il peut lire, écrire ou participer avec une blockchain publique.

Les Blockchain publiques sont décentralisées, personne n’a de contrôle sur le réseau et elles restent sécurisées car les données ne peuvent pas être modifiées une fois validées sur la chaîne de blocs.

Les plates-formes publiques de blockchain comme Bitcoin, Ethereum, Litecoin sont des plateformes de blockchain sans autorisation, elles s’efforcent d’augmenter et de protéger l’anonymat de l’utilisateur.

Blockchain privée

Dans une blockchain privée il y a des restrictions pour filtrer qui est autorisé à participer au réseau et à quelles transactions.

Les blockchains privées ont tendance à être associées à des outils de gestion des identités ou une architecture modulaire sur laquelle vous pouvez brancher votre propre solution de gestion des identités.

Il peut s’agir d’un fournisseur de services d’adhésion à une solution OAuth qui utilise par exemple Facebook, LinkedIn,…

Token Ethereum

Les tokens ou jetons Ethereum sont des actifs numériques qui sont construits à partir de la blockchain Ethereum. Ce sont des jetons qui attestent que vous possédez une valeur (économique par exemple). Ces jetons sont basés sur l’infrastructure existante d’Ethereum.

Pour stocker, recevoir, envoyer les ether (cryptomonnaie sur la blockchain ethereum) ou les tokens (qui sont des jetons qui sont des actifs numérique), il vous faut a minima un compte. Le plus simple moyen de créer un compte est :

Il est possible de créer son propre token pour créer son application décentralisée qui utilise la blockchain publique ethereum.

Tokenisation des actifs financier

La tokenisation est une méthode qui convertit les droits d’un actif (financier, immobilier …) en jetons numériques (tokens).

Exemple pour un appartement de 400 000 Euros. Le tokeniser consiste à le transformer en 400 000 tokens (le nombre est arbitraire, l’Émission peut être de 4 millions ou 100 jetons).

Les tokens sont émis sur une sorte de plate-forme prenant en charge les contrats intelligents, par exemple sur Ethereum. Le but est que les tokens puissent être librement échangés.

Lorsque vous achetez un token, vous achetez en fait une part de la propriété de l’actif (de l’appartemment de 400 000 euros).

Achetez 200 000 jetons et vous possédez la moitié des actifs. La Blockchain est registre partagé qui est immuable, il garantit qu’une fois que vous achetez des tokens, personne ne peut supprimer votre propriété.

Application décentralisée

Les applications décentralisées sont des applications qui communiquent avec la blockchain. L’interface des applications décentralisées est similaire à n’importe quel site Web ou application mobile.

Le Smart Contract représente la logique centrale de l’application décentralisée.

Illustration of a DApp that uses a blockchain with smart contracts combined with the pillars of Swarm and Whisper.
Source: Ethereum Stack exchange

Smart Contract

Les Smart Contract contiennent toute la logique métier d’une DApp. Ils sont chargés de lire et d’écrire des données dans la blockchain, aussi ils exécutent la logique métier.

Les contacts intelligents sont écrits dans un langage de programmation appelé SOLIDITY https://solidity.readthedocs.io, proche de Javascript.

A lire sur le sujet :

ANGULAR en moins de 128 mots – TypeScript – Angular Partie 8

Cet article fait suite aux sept premiers sur le sujet ANGULAR et porte sur le langage TypeScript :

Templates et interpolation

L’interpolation est l’incorporation d’expressions dans du texte balisé. Par défaut, l’interpolation utilise comme délimiteur les doubles accolades, {{ et }}.

<h3>Client n° : {{ numeroClient }}</h3>

Exemple de directive avec itération :

<li *ngFor="let client of listeClients">{{client.nom}}</li>

Services :

Les services permettent de découpler le composant de l’appel à un service, ils sont ainsi réutilisables.

ng generate service client
import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root',
})
export class ClientService {

  constructor() { }

}

La logique est alors découplée du service qui est injectable via l’injection de dépendance.

Injection de dépendance

Exemple d’injection de la dépendance ClientService dans un composant ClientComponent

import { Component, OnInit } from '@angular/core';

import { Hero } from '../hero';
import { HeroService } from '../hero.service';
import { MessageService } from '../message.service';

@Component({
  selector: 'app-heroes',
  templateUrl: './heroes.component.html',
  styleUrls: ['./heroes.component.css']
})
export class ClientComponent implements OnInit {

...

  getClients(): void {
    this.clientService.getClients();
  }
}

ANGULAR en moins de 128 mots – TypeScript – Partie 5

Cet article fait suite aux quatre premiers sur le sujet ANGULAR et porte sur le langage TypeScript :

Utilisation des classes

Comme dans les autres langages une classe permet de créer des objets et regroupe des variables et des fonctions qui sont fortement liées “Highly Related”

Exemple de classe

class Personne {
  nom: string;
  prenom: string;

  sePresenter() {
    console.log('Mon nom est ' + this.nom + ' ' + this.prenom);
  }
}

Modules :

Le stockage des classes peut se faire dans des fichiers séparés, dans ce cas il s’agit d’une déclaration de module.

Les modules permettent de rendre accessible la classe en dehors du fichier. La classes doit dans un premier temps être exportée via “export” pour être visible exemple de personne.ts:

export class Personne {
  nom: string;
  prenom: string;

  sePresenter() {
    console.log('Mon nom est ' + this.nom + ' ' + this.prenom);
  }
}

exemple de fichier main.ts qui importe la classe Personne :

import { Personne } from "./personne";

let personne = new Personne();

A noter qu’il existe des modules Angular qui seront importés avec la mention @angular exemple :

import { Component } from '@angular/core';

A lire :

https://www.typescriptlang.org/docs/handbook/modules.html

https://www.angularchef.com/recette/50/

ANGULAR en moins de 128 mots – TypeScript – Partie 4

Cet article fait suite aux trois premiers sur le sujet ANGULAR et porte sur le langage TypeScript :

Concept de “type assertion”

L’assertion de type est un moyen de dire au compilateur TypeScript quel est le type d’une variable. L’assertion de type est similaire à la conversion de type dans d’autres langages, mais dans TypeScript, ce n’est qu’une fonction de compilation.

let testComplet: any = "Test Assertion de type";
let test = (<string>testComplet).substring(0,4);
console.log(s);

Autre notation :

et testComplet: any = "Test Assertion de type";
let test = (testComplet as string).substring(0,4);
console.log(s);

Arrow Function :

L’utilisation de function arrow supprime la nécessité d’utiliser le mot-clé «function». Les paramètres sont passés entre crochets <> et l’expression de fonction est placée entre crochets {}.

let addition = (a: number, b: number): number => {
            return a + b;
}
addition(1, 2);

In line annotation :

En TypeScript, les annotations de type en ligne permettent de déclarer un objet pour chacune des propriétés de l’objet.

Autre utilisation :

let addition = (paireDeNombre = {nombreA: number,nombreB : number}): number => {
            return a + b;
}

Interface :

Les interfaces permettent de nommer ces types et sont un moyen puissant de définir des contrats dans votre code ainsi que des contrats avec du code en dehors de votre projet.

interface Point{
  x: number,
  y: number
}

Lien vers la documentation de TypeScript : https://www.typescriptlang.org/docs/home.html

ANGULAR en moins de 128 mots – TypeScript – Partie 3

TypeScript est un langage à typage fort typé, orienté objet et compilé. TypeScript est un sur-ensemble typé de JavaScript compilé en JavaScript. TypeScript est JavaScript et quelques fonctionnalités supplémentaires.

La documentation de typescript est disponible sur ce lien : https://www.typescriptlang.org/docs/home.html

Installation de TypeScript :

sudo npm install -g typescript

Execution du compilateur TypeScript :

tsc --version

Création d’un premier exemple TypeScript :

Création du fichier test.ts :

function salutation(nom) {
    console.log("Bonjour, " + nom);
}

var nomUtilisateur = "John";
salutation(nomUtilisateur);

Compilation du code :

tsc test.ts

A l’issue de la commande un fichier test.js est créé que l’on peut alors visualiser :

function salutation(nom) {
    console.log("Bonjour, " + nom);
}
var nomUtilisateur = "John";
salutation(nomUtilisateur);

On constate que pour cet exemple le code est le même en javascript et en typescript, on peut exécuter :

>node test.js
Bonjour, John

Définition d’une variable avec TypeScript :

Il est possible de déclarer une variable avec var qui est classique en javascript ou avec let qui est plus sécurisé avec TypeScript. Déclarer une variable avec var lui confère un scope global c’est à dire que la variable est disponible dans tout le code, let limite le scope de la variable au “nearest block”

Exemple 1 : utilisation de var (scope global)

function affichage(test) {
    var compte = 1;

    if (test) {
        var augmentation = compte + 5;
        return augmentation;
    }

    return augmentation;
}


affichage(false);

Ce code compile mais comporte des risques car la variable augmentation n’a pas été déclarée si le paramètre test = false.

Exemple 2 : utilisation de less (scope limited to nearest block)

Pour le code suivant, la compilation est en erreur en raison de la limitation du scope de la variable augmentation.

function affichage(test) {
    let compte = 1;

    if (test) {
        let augmentation = compte + 5;
        return augmentation;
    }

    // Erreur la variable n'existe pas
    return augmentation;
}
affichage(true);

>tsc test.ts
test.ts:10:12 - error TS2304: Cannot find name 'augmentation'.

Typage en TypeScript :

let compte = 10
compte = 'hello'

La compilation du code ci-dessus confirme le typage fort du langage, lors de la compilation l’erreur suivante est levée :

>tsc test.ts
test.ts:2:1 - error TS2322: Type '"hello"' is not assignable to type 'number'.

Annotation de type en TypeScript :

Les types suivants peuvent être annotés en TypeScript :

let a : number; //entier et décimal
let b : boolean;
let c : string;
let d : any;
let e : number[];
let f : number[] = [4, 5, 6];
let g : any[]    = [4, 'Hello', true, 6];
const letterA = 'A';
const couleurVert = 1;

Énumération en TypeScript :

enum Direction {
    enHaut = 1,
    enBas = 2,
    aGauche = 3,
    aDroite = 4
}

let prochaineDirection = Direction.enHaut;

Si on regarde le code ci-dessus après compilation par tsc on observe que le code TypeScript est nettement plus confortable que celui en JavaScript :

var Direction;
(function (Direction) {
    Direction[Direction["enHaut"] = 1] = "enHaut";
    Direction[Direction["enBas"] = 2] = "enBas";
    Direction[Direction["aGauche"] = 3] = "aGauche";
    Direction[Direction["aDroite"] = 4] = "aDroite";
})(Direction || (Direction = {}));
var prochaineDirection = Direction.enHaut;

Python les bases en plus de 128 mots [Partie 4]

Cet article fait suite aux trois premières parties qu’il est possible de consulter ici :

Je traite ici des bases du langage Python pour l’apprendre rapidement. En France ces bases sont enseignées en lycée aux classes de seconde SNT, première et terminale NSI. Elles font également partie du programme de connaissance pour le CAPES NSI.

Exceptions :

Lorsqu’une erreur se produit, (une exceptions) elle peut être gérée à l’aide de l’instruction try:

try:
  print(r)
except NameError:
  print("variable r non définie")
except:
  print("Autre exception") 

Commentaires :

#Ceci est un commentaire
#sur
#plusieurs ligne
print("Bonjour Python")
"""
Ceci est un commentaire
sur
plusieurs ligne
"""
print("Bonjour Python")

Classes :

Les classes sont comme un constructeur d’objet, cela permet de modeler des concepts réels.

class Personne:
  def __init__(self, nom, age):
    self.nom = nom
    self.age = age

  def ma_fonction(self):
    print("Nom de la personne : " + self.name)

p1 = Personne("Sébastien", 36)
print(p1.nom)
print(p1.age) 
p1.ma_fonction()
p1.age = 40 #Modification des propriétés de l'objet
del p1.age #supprime la propriété de l'objet
del p1  #supprime l'objet

self est une référence à l’instance actuelle de la classe et est utilisé pour accéder aux variables qui appartiennent à la classe. Il peut être nommé autrement que self, mais ce doit être obligatoirement le premier paramètre de toute fonction de la classe.

Héritage :

L’héritage permet de définir une classe qui hérite de toutes les méthodes et propriétés d’une autre classe.

class Animal :
   def marcher():
       print('marche')

class Chien(Animal)
    pass

c1 = Chien()
c1.marcher()

Constructeur :

La fonction __init __ () est appelée automatiquement chaque fois qu’un nouvel objet est créé.

super () fera que la classe enfant héritera de toutes les méthodes et propriétés de son parent.

class Etudiant(Personne):
  def __init__(self, nom, prenom):
    super().__init__(nom, prenom) 

Python les bases en plus de 128 mots [Partie 3]

Cet article fait suite aux deux premières parties qu’il est possible de consulter ici :

Je traite ici des bases du langage Python pour l’apprendre rapidement. En France ces bases sont enseignées en lycée aux classes de seconde SNT, première et terminale NSI. Elles font également partie du programme de connaissance pour le CAPES NSI.

Tuples :

Un tuple est une collection ordonnée comme les listes et immuable (qui ne change pas).

exempleTuple = ("pomme", "poire", "fraise")
print(exempleTuple)
print(exempleTuple[1])
print(exempleTuple[-1]) #L'indexation négative signifie à partir de la fin, -1 se réfère au dernier élément, -2 se réfère à l'avant-dernier élément, etc.
print(exempleTuple[1:2]) #Vous pouvez spécifier une plage d'index en spécifiant par où commencer et où terminer la plage.
z = list(exempleTuple) #conversion tuple en liste
z[1] = "banane" 
x = tuple(z) #conversion liste en tuple

for x in exempleTuple: #Boucle sur un tuple
  print(x) 

if "poire" in exempleTuple: #test d'existence dans un tuple
  print("Oui") 

Unpacking :

coordonnees = (1,2,3)
x,y,z = coordonnees
print(x)

Dictionnaires :

Un dictionnaire est une collection non ordonnée, modifiable et indexée.

client = {
   "nom": "Elodie",
   "age": "45",
   "annee": 1980
 }

print(client["age"])
client["nouvelleCle"] = "nouvelleValeur" #ajoute une nouvelle clé et valeur
client.get("solde") #renvoi 'None' car la clé n'existe pas

Fonctions :

Les fonctions permettent d’organiser le code en morceau réutilisables. En Python, une fonction est définie à l’aide du mot clé def.

def exemple_fonction():
  print("TestFonction")

exemple_fonction()

Les données peuvent être passées aux fonctions en tant que paramètre. Vous pouvez ajouter autant de paramètres que vous le souhaitez, il suffit de les séparer par une virgule.

def exemple_fonction(prenom):
  print("Bonjour " + prenom)

exemple_fonction("John")
exemple_fonction("Pierre")

Python les bases en plus de 128 mots [Partie 2]

Cet article fait suite à la première partie qu’il est possible de consulter ici : https://128mots.com/index.php/2019/12/04/python-les-bases-capes-nsi-snt-en-plus-de-128-mots/

Comme pour le premier article, je traite ici des bases du langage Python pour l’apprendre rapidement. En France ces bases sont enseignées en lycée aux classes de seconde SNT, première et terminale NSI. Elles font également partie du programme de connaissance pour le CAPES NSI.

Priorité des opérateurs :

Je récapitule la priorité des opérateurs en Python, de la priorité la plus haute à la priorité la plus basse

  • Parenthèses () : groupement d’opérations
  • Exposant : x ** y
  • Multiplication, multiplication de matrice, division, division entière, modulo : *, @, /, //, %
  • Addition, soustraction : +, –

Fonctions mathématiques :

import math
  • math.ceil(2.6) entier supérieur
  • math.floor(-5.3) partie entière, donne ici -8.0.
  • math.sqrt : racine carrée.
  • math.pow(5, 5) : 5 puissance 5.
  • math.exp(2) : fonction exponentielle.
  • math.log(2) : fonction logarithme
  • math.log(3, 2) : log en base 2.
  • math.factorial(4) : factorielle
  • math.fsum(L) : somme des éléments d’une liste
  • math.sin, math.cos, math.tan : fonctions trigonométriques
  • math.pi : pi
  • math.degrees(y) : conversion de radians en degrés
  • math.radians(y) : conversion de degrés en radians

Expressions conditionnelles :

Python s’appuie sur l’indentation pour définir la portée du code.

x = 100
y = 23
if x > y:
  print("x plus grand que y")
elif a == b:
  print("égalité")
else:
  print("y plus grand que x")

Chaines de caractères formatées (f-strings) :

import math
print(f'La valeur de pi est {math.pi:.3f}.')

Listes à deux dimensions (matrices) :

matrix = [[1, 2, 3], [4,5, 6], [7, 8, 9]]
print(matrix[0][1])

Méthodes sur les listes :

list.append('n') #Ajoute un élément en fin de liste
list.insert(0,'a') #Ajoute un élément à la position spécifiée
liste.pop(1) #Enleve l'élément de la liste à la position spécifiée
liste.sort() #Trie la liste
liste.reverse() #Retourne la liste
liste.copy()   #retourne une copie de la liste