Matériel et logiciel
Les premiers ordinateurs étaient câblés pour
réaliser les tâches qui leur étaient dévolues.
Les ordinateurs actuels ainsi que tous les
matériels exécutent des programmes.
Ces programmes sont développés en utilisant
des langages informatiques.
717 langages (merci Wikipédia)
A+ - A++ - A-0 System - A# - ABAL - ABAL++ - ABAP - ABC - ABCL/1 - ABCL/c+ - ABCL/R - ABCL/R2 - Abel - ABSET - ABSYS - Abundance - Accent - ACC - Ace DASL - ActForex - ACT-III - Ada -
Adenine - Afnix - Agora - Aikido - AIS Balise - Alef - Algebraic - Algol 60 - Algol 68 - Algol W - ALI - Alice - Ambi - Amiga E - AML - AMOS - AMPLE - A# .NET - Anubis - APDL - APL - AppleScript -
Arc - Ariberion - Arobase - ASP.NET - Assembleur - ATS - AUPL - AutoHotkey - AutoIt - Averest - awk - axe parser - Axum - B - Bash - BASIC - BASICA - Batch file - bc - BCPL - BeanShell -
Befunge - Bennu - Bertrand - BETA - Bigwig - Bistro - BitC - BLISS - BlitzBasic - BlitzBasic - Blue - Blueprint - Bon - Boo - Boomerang - Bosque - Bourne shell - BPEL - Brainfuck - BUGSYS -
BuildProfessional - C - C-- - C# - C++ - Caché ObjectScript - C/AL - Cameleon - Caml - Cat - CA-Telon - Cayenne - Cecil - Cel - Cesil - Ceylon - CFML - Cg - CHAIN - Chapel - Charity - Chef -
CHILL - Ch interpreter - CHIP-8 - chomski - CHR - Chrome - ChucK - CICODE - CIL - Cilk - CL - Claire - Clarion - Clean - Clipper - CLIST - Clojure - CLU - CMS-2 - CMS EXEC - COBOL -
CobolScript - Cobra - CODE - CoffeeScript - Cola - ColdC - ColdFusion - COMAL - COMIT - Common Lisp - COMPASS - Component Pascal - Converge - Cool - Coq - Coral 66 - Corn - CorVision -
Cosmos-f - COWSEL - CpcdosC+ - CPL - Crystal - C shell - Csound - CSP - CSS - CSS 3 - Cubescript - Curl - Curry - Cyclone - D - DaKeoZ - Dao - DarkBasic - DarkBASIC - Dart - DASL1 -
DASL2 - DataFlex - Datalog - dBase - dc - DCL - Deesel - Delphi - Dialect - Dialog Manager - DIBOL - DinkC - Down - Duke C - Dylan - Dynace - E - Ease - EASY - Easytrieve Classic - Easytrieve
Plus - eC - ECMAScript - eDeveloper - Edinburgh IMP - EGL - Eiffel - Einstein - Elan - elastiC - Elf - Emacs Lisp - Englesi - Epigram - Erlang - Escapade - Escher - Esterel - Etoys - Euclid - Euler -
Euphoria - EXEC 2 - Extends - F - F# - Factor - Falcon - False - Fan - Fancy - Fantom - FAUST - Felix - Ferite - FFP - Fjölnir - FL - Flavors - FLOW-MATIC - Fly - FOCAL - FOCUS - FOIL -
FORMAC - @Formula - Forth - Fortran - Fortress - FoxPro 2 - FP - Franz Lisp - FreeBasic - Frink - F-Script - FSProg - Funnel - Fuxi - Gambas - GAMS - GAP - GAP - G-code - GDL - GFA BASIC
- Gibiane - GJ - GLSL - GM - GML - Go - Go! - GOAL - Gödel - Godiva - Goo - GOTO++ - GOTRAN - GPSS - Grammer - GraphTalk - GRASS - Green - Groovy - GW-Basic - Hack - HAL/S -
Haskell - Haxe - High Level Assembly - HLSL - Hop - Hope - Hugo - Hume - HyperTalk - IBM Basic Assembly - IBM Informix-4GL - IBM RPG - ICI - Icon - Id - IDL - IL 2 - IMP - Inform - INTERCAL -
Io - Ioke - IPL - IPTSCRAE - ISWIM - J - J# - Jackson - JADE - Jako - JAL - Janus - JASS - Java - JavaScript - JEAN - Join Java - JOSS - Joule - JOVIAL - Joy - JSP - Julia - Kafe - Kaleidoscope -
Karel - Karel++ - Kaya - KEE - Kiev - KIF - Kite - Kogut - Korn shell - Kotlin - KRC - KRYPTON - KUKA - L - LabVIEW - Ladder - Lagoona - LANSA - LARP - Lasso - Lava - Leadwerks Script - Leda
- [leekwars] - Legoscript - Lexico - Limbo - Limnor - LINC - Lingo - Linoleum - Linotte - LIS - LISA - Lisaac - Lisp - Lithe - Little b - L# .NET - Logo - LOLCODE - LPC - LSE - LSL - Lua - Lucid - Lush
- Lustre - LYaPAS - Lynx - LZX - M - M4 - MAD - Magik - Magma - Malbolge - MapBasic - Maple - MAPPER 3 - MARK-IV 4 - Mary - Mathematica - MATLAB - Maxima - MaxScript - Maya - MDL -
Mercury - Mesa - MetaL - MicroAlg - Microcode - Micro Lua DS - MicroScript - Microsoft Macro Assembler - Microsoft Small Basic - MIIS - MillScript - MIMIC - min - Mindscript - Miranda - mIRC -
MisterDev - Miva Script - ML - Moby - Model 204 - Modula - Modula-2 - Modula-3 - Mondrian - MOO - Mortran - Moto - Mouse - MPD - MPP - MSIL - MSL - MSX BASIC - MUMPS - Mythryl - N -
Napier88 - NATURAL - NBC - NEAT chipset - Neko - Nemerle - Neonitisme - NESL - Net.Data - NetLogo - NewLISP - NEWP - NewtonScript - NGL - Nial - Nice - Nickle - Nil - Nit - Node.js - NPL -
NQC - Nu - NXC - NXT-G - Nyquist - Oak - Oberon - Objective-C - Objective-J - Object Lisp - ObjectLOGO - Obliq - Obol - occam - occam-p - OmniMark - Onyx - ooc - Opa - Opal - OpenEdge ABL
- OPL - OPS5 - ORCA/Modula-2 - Ork - Orwell - o:XML - Oxygene - Oz - Panoramic - PARI/GP - Pascal - Pascal Objet - Pawn - PCASTL - PCF - PEARL - Perl - Pharo - PHP - Phrogram 7 - Pi-
calcul - Pico - Pict - Piet - Pike - PIKT - PILOT - Pizza - PL/0 - PL-11 - PL360 - PLANC - Plankalkül - PL/B - PL/C - PLEX - PLEXIL - PL/I - Pliant - PL/M - PL/P - PL/SQL - POP-11 - Poplog -
PortablE - Portal - PostScript - PowerBasic - PowerBuilder - Powerhouse - PowerShell - PPL - Processing - Prograph - PROIV - Prolog - Promela - PROTEL - Proteus - ProvideX - Pure -
PureBasic - PureBasic - Python - Q - QBasic - Q# - Qi - QML - QPL - QtScript - QuakeC - QuickBasic - R - R++ - Rapira - Ratfiv - Ratfor - RBScript - rc - Rebol - Red - Redcode - REFAL - Reia -
Revolution - REXX - Rlab - ROOP - RPG - RPL - RSL - Ruby - Rust - S - S2 - S3 - SAC - SA-C - Safe C - SAIL - SALSA - SAM76 - SAS - SASL - Sather - Sawzall - SBL - Scala - Scheme - Scilab -
Scol - Scratch - Script.NET - Sed - Seed7 - Self - SETL - Shakespeare - Shift Script - Signal - SiMPLE - SIMPOL - SIMSCRIPT - Simula - SISAL - S-Lang - Slate - SLIP - SMALL - SmallBasic -
Smalltalk - SML - Snap! - SNOBOL - Snow - Snowball - SNUSP - SOL - Span - SPARK - Spice - SPIN - SPITBOL - SP/k - SPS - Squeak - Squirrel - SR - SSL - STOS BASIC - Strand - Subtext -
Suneido - SuperCollider - Swift - SYMPL - SyncCharts - SystemVerilog - T - TACL - TACPOL - TADS - TAL - Tcl 8 - Tea - TECO - TELCOMP - TenCORE - Terra - TeX 9 - TEX - Thue - TI-Basic - TI-
Basic - Ticol - TIE - TI-Extended Basic - Tiger - Timber - Tom - TOM - Topspeed - TPU - Trac - Transact-SQL - True Basic - TTCN - Turbo Basic - Turbo Pascal - Turing - TUTOR - TXL - TypeScript -
Ubercode - Unicon - Uniface - uniPaaS - UNITY - unityscript - Unix shell - Unlambda - UnrealScript - USE 10 - Vala - VBA - VBScript - Verilog - VHDL - Visual Adélia - Visual Basic - Visual
Basic .NET - Visual Basic - Visual DataFlex - Visual DialogScript - Visual FoxPro - Visual Objects - Vvvv - Water - WATFIV, WATFOR - WebQL - Whitespace - Winbatch - Windows PowerShell -
WLangage - wxBasic - X# - X++ - X10 - XBL - xHarbour - XL - XNA - XOTcl - XPL - XPL0 - XQuery - XSLT - Y - YaBasic - YACC - YAL - Yoix - Yorick - Zeno - Z notation - Zonnon - ZOPL - ZPL -
ZScript - ZZT-oop
Quelques langages
Le langage machine : assembleur
Les ancêtres : COBOL (informatique de gestion), FORTRAN (calcul scientifique)
L’un des plus simples BASIC (mais pas standard)
Le premier langage réellement structuré : PASCAL
Le plus efficace, performant, à la base de tout ce qui est puissant : C et C++
Gestion du système, utilitaires : PERL, PYTHON, LUA
Pour les sites Web : PHP, JAVA, JAVASCRIPT
Quelques ancêtres FORTH, LISP, ADA, GAP
Orientés « utilisateur amateur et éducation » : LOGO, SCRATCH, BLOCKY
Dans le monde Windows : C# VisualBasic
Ce ne sont pas des langages
Les « faux-amis » :
HTML, XML, CSS
Ils utilisent une syntaxe mais ne disposent pas des attributs essentiels des langages
(définition des données, condition, boucle...)
Les cas particuliers :
EXCEL et CALC
→ ils utilisent un langage simpliste dans un environnement événementiel
Syntaxe des langages
Les opérations de base
Les variables : mémorisation des données
les instructions évoluées ou spécialisées
les instructions conditionnelles les instructions répétitives
l’organisation :
simple,
les fonctions objet,
événementielle...
Syntaxe des langages
Les opérations de base
Les variables : mémorisation des données
les instructions évoluées ou spécialisées
les instructions conditionnelles les instructions répétitives
l’organisation :
simple,
les fonctions objet,
événementielle...
Les variables
Une variable est un nom attribué à une mémoire :
●
nom_du_client ou nomDuClient
Pas d’accent
●
indice style « snake » ou « camel »
compromis entre lisibilité et facilité d’écriture
●
total_general ou totalGeneral
●
w
On lui associe également un type de données.
●
nombre entier : 0 127 32767 2 147 483 647
●
nombre à virgule : 1,55 85,0002 124,0
●
caractère : ‘A’ ‘h’ ‘1’ ‘ :’
●
chaîne de caractères : « Hello world ! » « 127 »
Les variables
Il y a quelques limitations :
●
pas de nombre fractionnaire : 2/3 mais aussi 3/4 ou 1/2
●
pas d’irrationnel (π, φ, e, ∞)
●
précision limitée pour les nombres à virgule
●
valeurs limitées pour les grands nombres
●
certains types de données ne sont pas manipulables
facilement :
– dates : 2019-07-11 ou 1562400550
Les tableaux de variables
Jours du mois :
double temperature[31] ;
1 2 3 4 5 6 7 ...
17,5 19,0 18,7 22,3
1,1 1,2 1,3 1,4
Matrice à plusieurs dimensions : 2,1 2,2 2,3 2,4
int coef[100][10] ; 3,1 3,2 3,3 3,4
int planning[12][31][24] ; 4,1 4,2 4,3 4,4
Les structures
Une structure permet d’assembler plusieurs variables pour former
un objet plus complexe.
struct NOMBRE_COMPLEXE { struct FRACTIONNAIRE {
double reel; int numerateur;
double imaginaire; int denominateur;
}; };
Syntaxe des langages
Les opérations de base
Les variables : mémorisation des données
les instructions évoluées ou spécialisées
les instructions conditionnelles les instructions répétitives
l’organisation :
simple,
les fonctions objet,
événementielle...
Les opérations
affectation :
A=B;
opérations arithmétiques : + - * /
Participants= hommes + femmes ;
montant = prix * quantité ;
autres opérations :
racine_de_2 = sqrt(2) ;
chaîne de caractères :
debut = substring(« Bonjour le monde », 1, 7) ;
nom_complet = nom + « » + prenom ;
Les instructions évoluées
Manipulation des données selon leur type :
Chaînes de caractères
Date, heure, durée, …
Tableaux
Calculs
Les instructions évoluées
Manipulation des Manipulation de base de
fichiers données
Les instructions évoluées
Instructions qui n’existaient pas dans les « anciens »
langages informatiques :
Échange de données par le réseau
Environnement graphique
Syntaxe des langages
Les opérations de base
Les variables : mémorisation des données
les instructions évoluées ou spécialisées
les instructions conditionnelles les instructions répétitives
l’organisation :
simple,
les fonctions objet,
événementielle...
Instructions conditionnelles
if (condition_à_évaluer) { if (nombre >= 0) {
instructions racine= sqrt(nombre) ;
si la condition print(« Racine : » . string(nombre)) ;
est vraie } else {
} else { print(« Le nombre est négatif ! ») ;
instructions exit(0) ;
si la condition }
est fausse Suite des instructions...
}
Suite des instructions...
La condition est de la forme :
poire < 10
(poire < pomme) or (pomme > 100)
Instructions conditionnelles
int etatAvion ;
switch(etatAvion) {
case 0 : print(« Avion au sol ») ;
case 1 : print(« Embarquement des passagers ») ;
case 2 : print(« En cours de décollage ») ;
case 3 : print(« Avion en vol ») ;
case 7 : print(« Retard ») ;
case 4 : print(« Avion annoncé ») ;
case 5 : print(« Atterrissage en cours ») ;
case 6 : print(« Débarquement des passagers ») ;
default: print(« Avion perdu, désolé ») ;
}
Syntaxe des langages
Les opérations de base
Les variables : mémorisation des données
les instructions évoluées ou spécialisées
les instructions conditionnelles les instructions répétitives
l’organisation :
simple,
les fonctions objet,
événementielle...
instructions de répétition
while (condition) {
...
instructions à répéter
tant que la condition est vraie
...
}
instructions de répétition
while, until, …
for (itérateur)
for each (collection)
Exemple
int nombre ;
nombre= input(« Saisir un nombre de départ : ») ;
if (nombre > 0) {
while (nombre > 1) {
print(nombre) ;
// selon la parité
if ( (nombre%2) == 1 ) {
// le nombre est impair
nombre*= 3 ;
nombre= nombre * 3 + 1 ; nombre++ ;
} else {
// le nombre est pair
nombre= nombre / 2 ;
}
nombre/= 2 ;
}
} else {
print(« Le nombre doit être strictement positif ») ;
}
Syntaxe des langages
Les opérations de base
Les variables : mémorisation des données
les instructions évoluées ou spécialisées
les instructions conditionnelles les instructions répétitives
l’organisation :
simple,
les fonctions objet,
événementielle...
Les fonctions
Les fonctions permettent d’étendre le langage en
créant de nouvelles instructions.
function carre(int cote) { carre(100) ;
for (i=0 ; i<4 ; i++) { carre(80) ;
avancer(cote) ;
tourner(90) ;
}
}
récursivité
function int factorielle(int n) { function int factorielle(int n) {
int prod= 1 ; if (n > 1) {
while (n > 1) { return factorielle(n-1) * n ;
prod= prod * n ; }
n= n – 1 ; return 1;
} }
return prod ;
}
n ! = n * (n-1) * (n-2)… 2 * 1 n ! = n * (n-1) !
récursivité
récursivité
Syntaxe des langages
Les opérations de base
Les variables : mémorisation des données
les instructions évoluées ou spécialisées
les instructions conditionnelles les instructions répétitives
l’organisation :
simple,
les fonctions objet,
événementielle...
Les algorithmes
Un algorithme est une suite finie et Début
non ambiguë d’opérations ou
d'instructions permettant de
résoudre une classe de problèmes
N>1
(merci wikipedia!) N est impair
Le programme possède un début et
une fin. N=N*2 N=3*N+1
Fin
Les modes d’exécution
Click souris Actions spécifiques à déclencher
quand le bouton est actionné.
zone modifiée Actions spécifiques à déclencher
quand une zone est modifiée.
Le jeu du pendu
- - E - - T - - E
ASD
les erreurs
syntaxe : la grammaire du langage n’a pas été respectée,
aucune exécution n’est possible.
Il faut corriger la faute de grammaire.
exécution : le programme s’exécute mais provoque une erreur du
calculateur.
division par zéro, accès au 20ème caractère d’une chaîne qui n’en
contient que 10, ...
logique (algorithme) : le programme est techniquement correct, c’est sa logique qui
est fausse (erreur d’analyse).
Par exemple : si la conjecture de Syracuse est fausse, le programme pourrait ne
jamais se terminer.
le débogage
Historique :
Un insecte (bug en anglais)
s’est glissé dans les circuits
électriques et a provoqué un
court-circuit.
Quel langage choisir
C’est clair : Ça dépend !
VisualBasic : Windows, environnement lourd,
graphisme compliqué.
JavaScript : intégré dans un navigateur, limité par
les contraintes de sécurité.
Python : l’un des plus populaire, quelques
contraintes dans le style d’écriture.
Perl : puissant mais déroutant parfois.
Conclusion
Plus de 700 langages, chacun utilisant :
définition des données, instructions de base,
conditions, répétitions, fonctions
dans un environnement d’exécution
la seule limite : votre imagination !
Amusez-vous : créez vos propres programmes !