a la programmation - emena

publicité
Chapitre : INTRODUCTION A LA
PROGRAMMATION
Serrhini Mohamed
SMIA S1
2016-2017
www.emena.org/cours/
Introduction
• le souci d’automatisation des calculs date de
bien avant cela. Ainsi les grecs, les chinois
savaient calculer, automatiser des calculs (`a
la main, en utilisant par exemple un boulier).
• Les langages de programmation ont fait leur
apparition aux environs de 1950
• Mais la programmation “moderne”
mathématique, commence sans doute en
1840, grâce a Lady Ada Lovelace (18141852), qui définit le principe des itérations
successives dans l’ exécution d’une
opération.
Introduction
• En l’honneur d’Al Khawarizmi elle a nomme “algorithme” le processus
logique d’ exécution d’un programme. Elle est aussi `a l’origine du
Principe des machines `a calculer. Pour elle, une machine `a calculer
devait comporter :
1. un dispositif permettant d’introduire les données numériques
(cartes perforées, roues dentées...),
2. une mémoire pour conserver les valeurs numériques entrées,
3. une unité de commande qui indique les taches `a effectuer,
4. un “moulin” charge d’effectuer les calculs,
5. un dispositif permettant de prendre connaissance des résultats
(imprimante...).
• Ces principes seront, un siècle plus tard, a la base des premiers
ordinateurs. On a en quelque sorte la même décomposition :
1.
l’introduction des données s’effectue grâce a un périphérique
d’entrée (clavier, souris, camera, micro...)
2.
la mémoire servant `a conserver les données sous différentes
formes : registres (mémoire interne au processeur), mémoire
cache, mémoire vive, mémoire de masse...
3.
L’unit´e de commande (Partie Commande du processeur) indique
et coordonne l’´exécution les taches, 4. le “moulin” est l’unité
arithmétique et logique (ALU) du processeur,
1. Historique des langages de
programmation
• La communication entre l’homme et la machine
s’effectue à l’aide de plusieurs moyens physiques
externes.
• Les ordres que l’on donne à l’ordinateur pour agir
sont fondés sur la notion d’instruction comme
nous l’avons déjà vu. Ces instructions constituent
un langage de programmation.
• Depuis leur création, les langages de
programmation ont évolué et se sont diversifiés.
objectifs
• L’un des principaux objectifs d’un langage de
programmation est de permettre la construction
de logiciels ayant un minimum de qualités
comme la fiabilité, la convivialité, l’efficacité.
Catégories des langages de
programmation
• Schématiquement il est possible de les classer
en cinq catégories :
• 1° Les langages procéduraux ou impératifs.
• 2° Les langages fonctionnels.
• 3° Les langages logiques.
• 4° Les langages objets.
• 5° Les langages de spécification.
Les plus utilisés
• Les langages majoritairement les plus utilisés actuellement
sont ceux qui font partie de la catégorie des langages
procéduraux.
• Les ordinateurs étant des machines de Turing (améliorées par
von Neumann), la notion de mémoire machine est
représentée par la donnée abstraite qu’est une variable, dans
un langage procédural. D’autre part, les machines de Türing
sont séquentielles et les langages impératifs traitent les
instructions séquentiellement.
• Ceci montre que les langages procéduraux sont parfaitement
bien adaptés à l’architecture de l’ordinateur ; ils sont donc
plus " facilement " adaptables à la machine.
Les langages procéduraux ou
impératifs
•
• Tous les langages procéduraux ont un ancêtre
commun : le langage FORTRAN.
Famille des langages informatique
un arbre généalogique (non exhaustif) de
certains langages connus. Pour chaque langage
nous avons indiqué quelques éléments de
référence.
• Par exemple : FORTRAN (58) [scientifique - IBM] signifie que le
premier compilateur commercial a été diffusé environ en
1958, que le domaine d’activité pour lequel le langage a été
élaboré est le domaine du calcul scientifique, enfin qu’il s’agit
d’un acte commercial puisque c’est la compagnie IBM qui l’a
fait réaliser.
Langages
• Dans cette courte liste, seuls Algol, Basic et
Pascal sont des langages qui ont été conçus
par des équipes dans des buts de recherche
ou d’enseignement. Les autres langages sont
élaborés par des firmes et des compagnies
dans des buts de commercialisation, de
rationalisation des coûts de gestion (DOD)
etc... Les langages de programmation, comme
le reste des outils de la science informatique,
sont fortement soumis aux règles du marché,
ce qui provoque pour cette discipline le pire et
le meilleur.
Les langages fonctionnels
• Dans un langage fonctionnel, les actions reposent sur des fonctions
mathématiques ou non qui renvoient des résultats. Un langage
fonctionnel est essentiellement composé d’un dictionnaire de fonctions
prédéfinies et d’un mécanisme de construction de nouvelles fonctions par
l’utilisateur. Citons quelques représentants des langages fonctionnels :
• LISP :(LISt Processing - 1962) en fait c’est essentiellement un langage de
traitement de listes.
• SCHEME : c’est un dialecte pédagogique épuré(1975) de LISP.
• ML : langage fonctionnel moderne(1990) classé dans la catégorie des
langages fonctionnels fortement typés (l’INRIA diffuse gratuitement sur
micro-ordinateur une version CAML-Light pour l’enseignement). CAML est
utilisé actuellement pour l'enseignement de l'informatique dans les
classes préparatoires aux grandes écoles scientifiques françaises.
Les langages logiques
• Citons la catégorie des langages de programmation en logique
et son principal représentant :
• PROLOG (PROgrammation en LOGique - 1982).
• Dérivé de l’intelligence artificielle, il oblige le programmeur à
penser ses actions en termes de buts et à en faire une
description relationnelle (vision déclarative). Le langage est
fondé sur un moteur d’inférence d’ordre 1 (logique des
prédicats), et permet l’exploration exhaustive automatique de
différents chemins amenant à des solutions. Il possède une
qualité intéressante : il est possible d’interpréter un
programme prolog d’une manière déclarative ou d’une
manière procédurale. Le Groupe d’Intelligence Artificielle de
Marseille-Luminy fournit des prologs sur micro-ordinateurs.
Les langages orientés objets (L.O.O)
• Les langages à objets : ils sont fondés sur une seule catégorie
d’éléments : " les objets " qui communiquent entre eux grâce
à l’envoi de messages (grâce à des opérateurs appelés
méthodes). Par rapport à un langage impératif typé, un objet
est l’équivalent (mutatis mutandis) d’une variable (simple ou
structurée) et la classe dont il est l’instance correspond au
type de la variable.
• SIMULA-67 (1967) est le premier langage objet, SMALLTALK80(1980) est un environnement de développement purement
objet, Eiffel(1990) est un langage objet tourné vers le génie
logiciel et la réutilisabilité.
Les langages de spécification
• Les langages de spécification sont encore du
domaine de la recherche. Leurs objectifs sont
de décrire le plus rigoureusement possible (les
modèles principaux sont mathématiques) un
logiciel afin de pouvoir le valider et le vérifier.
Les langages hybrides
• Une mention spéciale ici pour des concepts hybrides qui
peuvent être de bons compromis entre des catégories
différentes.
• Les concepteurs de tels langages essaient d’importer dans
leur langage les qualités inhérentes à au moins deux
catégories.
• La catégorie la plus utilisée est celle des langages impératifs.
Par exemple, la plupart des langages impératifs purs cités plus
haut bénéficient d’une " extension " objet, comme C++ qui est
une extension orientée objet du langage C conçu à l’origine
pour écrire le système d’exploitation Unix.
Les langages hybrides
• récemment est apparu un langage comme Delphi de borland
• l’approche objet du C++ et les approches visuelles et événementielles de
Visual Basic de Microsoft (la sortie fin 2001 de la version entièrement
orientée objet de VB, dénommée VB .Net, procure à Visual Basic un statut
de langage hybride).
• Enfin, mentionnons le langage JAVA qui permet le développement multiplateforme en particulier pour l’intranet et qui est grandement utilisé
malgré son manque de rapidité dû à sa machine virtuelle.
• Un mot sur le tout récent langage C# support de développement de la
plateforme Microsoft .Net, qui a été inventé par le père du langage Delphi
(C# s'approprie des avantages de Java et de Delphi, il suit de très près la
syntaxe de Java et celle de C++)et qui est le fer de lance de la plateforme
.Net de microsoft.
• Object Pascal, C++, Ada95, Java, C# sont des langages procéduraux qui ont
été fortement étendus ou remaniés pour se conformer aux standards
objets.
Définitions : Algorithme, Langage
• Un algorithme est un moyen pour un humain de présenter la
résolution par calcul d’un problème à une autre personne
physique. Un algorithme est un énoncé dans un langage défini
d’une suite d’opérations permettant de résoudre par calcul un
problème.
• Un langage de programmation permet de définir les
ensembles d'instructions effectuées par un ordinateur lors de
l'exécution d'un programme. Les langages de programmation
permettent d’implémenter des algorithmes. Il existe des
dizaines de langages informatiques adaptés, ou non, à des
domaines spécifiques
Qu’est ce qu’un langage de
programmation ?
• Un langage de programmation est, d’un point de vue mathématique, un langage
formel, c’est-`a-dire:
• un ensemble de suites (appelles mots) de symboles choisis dans un ensemble
donné (appelé alphabet) qui vérifient certaines contraintes spécifiques au langage
(syntaxe).
• Dans le cas des langages de programmation, on trouve dans l’alphabet plusieurs
types de symboles :
• des mots-clés. Ex : main, int, if, for ...,
– des operateurs. Ex : =, <,& ...,
– des chiffres et des lettres permettant d’identifier des variables ou est constantes,
– des caractères spéciaux : Ex : accolades, crochets, point-virgule, tiret bas ou blanc
souligné (Under score)... permettant de structurer le tout...
QU'EST QU'UN LANGAGE?
•
•
D'un point de vue matériel, un ordinateur est un appareil électronique traitant des
ensembles de signaux électriques. Son fonctionnement est contrôlé par un
programme qui est une suite d'instructions. Il ne nous serait pas commode
d'introduire des instructions et des informations dans l'ordinateur directement
sous forme de signaux électriques (bien que cette méthode fut celle utilisée par
les premiers programmeurs).
Aussi l'ordinateur est-il fourni avec un programme qui traduit en langage machine
un langage de programmation que nous comprenons facilement.
Qu’est ce qu’un programme?
• Un programme est un mot du langage, c’est-`a-dire une suite de
symboles vérifiant les contraintes dictées par la syntaxe du langage.
1. soit on utilise un langage de bas niveau : on 'écrit un programme
directement dans le langage machine (ou langage natif)
compréhensible par le processeur, mais rarement intelligible puisque
rares sont les personnes qui parlent le binaire couramment.
2. soit on utilise un langage de haut niveau : on ´écrit un programme
dans un langage inintelligible pour le processeur, qui sera ensuite
“traduit” en langage machine afin que le processeur l’´exécute. Ces
langages, plus sympathique pour l’homme, permettent en quelques
sorte de d´ écrire des taches sans se soucier des détails sur la manière
dont la machine l’ exécuté.
Qu’est ce qu’un programme?
•
•
•
•
•
•
•
Deux stratégies sont utilisées pour les langages de haut niveau. La différence réside dans la
manière dont on traduit le programme, qui est `a l’origine dans un ou plusieurs fichiers texte
appelés fichiers source ou code source :
1. soit on ´écrit un programme dans un langage interprété.
Le code source sera traduit mot `a mot ou instruction par instructions, dans le langage
machine propre au processeur par un programme auxiliaire l’ interpréteur.
L’humain fait une requête, cette requête est traduite par L interpréteur, qui détermine la
stratégie d’ ´exécution, le processeur l’ exécute puis on passe `a la requête suivante.
Chaque ´exécution du programme nécessite l’utilisation de l’ interpréteur.
2. soit on ´écrit un programme dans un langage compile. Le code source sera traduit (une
bonne fois pour toute) dans le langage machine propre au processeur par un programme
compilateur.
Contrairement aux interpréteurs, les compilateurs lisent entièrement le code source avant de
le traduire, détermine la stratégie d’´exécution de toutes les instructions, puis génère un
fichier binaire ´exécutable : le fichier produit n’a plus besoin d’ˆêtre lancé par un autre
programme, il est autonome. Cela permet de garantir la sécurité du code source mais chaque
modification nécessité une recompilation.
L'Assembleur (ASM)
Inventé en 1945 par John von Neumann, l'assembleur fut le premier vrai
langage de programmation mais aussi le plus proche du langage machine (il
s'adresse directement au processeur) et de ce fait, l'un des plus compliqués.
Les instructions sont de type MOV, ADD, PUSH, POP, INT, bref rarement plus
de 5 lettres, ce qui les rend difficile à mémoriser ; il faut aussi bien comprendre
le fonctionnement de la pile et des différents registres du processeur (prise de
tête garantie). Il n'y a pas d'instructions toutes faites : il faut d'abord mettre les
bonnes données dans les bons registres avant d'appeler les interruptions
adéquates. De plus, il existe un langage assembleur par famille de processeur
(le plus courant est le langage assembleur pour Intel x86). Il présente
néanmoins l'avantage de donner des exécutables de taille réduite. À noter que
c'est le langage de prédilection des crackers (pirates) qui s'en servent d'une
part pour analyser du code décompilé et d'autre part pour rendre leurs cracks
plus petits.
L'Assembleur (ASM)
Languages FORTRAN
•
Les langages de programmation sont nombreux et variés. Dans ce chapitre, nous
allons en évoquer quelques-uns qui, actuellement, sont le plus souvent utilisés
dans la programmation scientifique. Il s'agit du FORTRAN, du BASIC, du Pascal, du
"C" et de Java.
ORIGINES
FORTRAN: Ce fut le premier langage destiné à permettre
l'écriture de programmes par des non électroniciens. Il était
principalement destiné à faciliter le transcodage des formules
mathématiques (d'où son nom FORmula TRANslation). Il a été
proposé en 1956 comme une alternative à la programmation
manuelle des ordinateurs. Sa conception repose sur une
approche pragmatique qui met en avant l'efficacité du code
plutôt que la qualité conceptuelle du langage.
Languages BASIC
•
Les langages de programmation sont nombreux et variés. Dans ce chapitre, nous
allons en évoquer quelques-uns qui, actuellement, sont le plus souvent utilisés
dans la programmation scientifique. Il s'agit du FORTRAN, du BASIC, du Pascal, du
"C" et de Java.
• BASIC :Ce langage (Beginner All purpose Symbolic Instruction Code) a été
conçu au Darthmouth College (1967 U.S.A.) pour faciliter l'apprentissage
de la programmation par les étudiants. Les auteurs du BASIC ont construit
un langage très facile à implémenter sur les machines de l'époque et qui
permettait, pour la première fois, une utilisation interactive. Le langage
eut un succès mitigé jusqu'à l'apparition des micro-ordinateurs.
Cependant sous l'impulsion de Bill Gates et sa société Microsoft, qui
propose depuis 1975 des versions du BASIC pour tous les PC, le BASIC est
devenu la "langua franca" de l'informatique individuelle. En effet, le BASIC
permet de réaliser très rapidement de petits programmes et, grâce à un
éditeur incorporé et à des instructions système telles que NEW, LIST, OLD,
etc…, il isole l'utilisateur du système d'exploitation.
Languages BASIC
Language Pascal
• Pascal: En même temps que naissait le FORTRAN, un comité d'experts
tentait de définir un nouveau langage qui, tout en restant simple et
efficace, inclurait les notions importantes de structuration des algorithmes
(for, while, case, etc…) et des données (array, record, pointeur, etc…). De
plus ce nouveau langage devait permettre de composer des programmes
faciles à relire et à expliquer. Ce sont ces concepts qui ont donné
naissance à l'ALGOL dès 1960 et ensuite à toute une génération de
langages structurés dont le plus représentatif, défini en 1972 par N. Wirtz,
est le Pascal. L'intérêt pour le Pascal s'est surtout manifesté dans les
années quatre-vingt lorsque plusieurs universités l'ont adopté comme
langage d'initiation. Depuis, il est devenu le langage dominant dans
l'enseignement. Ce mouvement s'explique par le besoin de disposer d'un
langage simple, possédant un ensemble cohérent d'instructions
permettant de structurer à la fois les programmes et les données. Cette
approche favorise l'adoption par les étudiants d'un style de
programmation élégant et efficace.
Language C
• Le "C : Historiquement, le "C" fut créé en 1978 au laboratoire Bell pour
implémenter le système d'exploitation UNIX sur des machines de la
gamme PDP-11 de DIGITAL.
• La force du "C" réside dans le fait qu'il allie les avantages d'un langage
structuré de haut niveau comme le Pascal à l'efficacité du langage
assembleur.
• Il permet d'écrire des programmes extrêmement puissants et compacts.
Actuellement le "C" subit de nombreuses extensions et peut être
considéré comme un langage universel. Il reste néanmoins un langage
pour les programmeurs chevronnés plutôt que pour les novices. Notons
aussi que le texte d'un programme écrit en "C" est habituellement assez
difficile à comprendre et que l'absence de vérification de la cohérence des
expressions (pas de "type checking") peut conduire, dans des mains
inexpérimentées, à des programmes dont le fonctionnement est incertain.
Le "C" a maintenant un successeur direct qui est le langage C++.
• Le C++ reprend toute la syntaxe et les instructions du "C" mais y ajoute
des notions nouvelles issues de la programmation objet-orientée
Language C
Language JAVA
• JAVA : JAVA est un langage informatique récent qui intègre les
nouvelles possibilités de programmation offertes par le
réseau Internet. JAVA permet d􀀂écrire des programmes
téléchargeables (Applets) qui fonctionnent directement sur la
plupart des ordinateurs.
JAVA repose sur les techniques de programmation les plus
modernes. Il est complètement objet-orienté et inclut, entre
autres, des mécanismes permettant la programmation en
parallèle (threat) et la gestion des erreurs (exception). Le
langage peut être étendu dans toutes les directions grâce au
mécanisme des classes externes qui permet d’inclure dans un
programme des “objets” au comportement spécifique (base
de données, multimedia, etc...).
Language JAVA
Les instructions fondamentales
• Lorsqu'un programme s'exécute, les instructions s'enchaînent
normalement séquentiellement selon l'ordre d'écriture.
• L'ordre d'exécution peut cependant être modifié par des
instructions de rupture de séquence.
• Ces instructions de déroutement sont généralement
conditionnelles et leur comportement dépend de la valeur (vraie
ou fausse) d'une expression booléenne.
• Tous les langages disposent au minimum d’instructions qui
permettent de changer L’ordre d’exécution des instructions de
calcul et de réaliser des boucles.
• Certaines de ces instructions sont dites conditionnelles car leur
effet dépend de l’évaluation d’une condition.
Les instructions fondamentales
• a) Déroutement inconditionnel (GOTO)
Cette instruction déroute inconditionnellement le programme vers une
instruction repérée par un label.
le GOTO transfère le contrôle du programme vers n'importe quelle autre
instruction
• b) Déroutement conditionnel
if <condition> then <instruction> [else <instruction>];
Formellement, l’instruction conditionnelle exécute une instruction si une
expression logique est vraie (then) et une autre dans le cas contraire (else). L􀀂
option else est souvent facultative. Si elle est absente, rien ne se passe lorsque
l'expression booléenne est fausse.
• c) Répétition non conditionnel le (for) – Boucles
for <var. index>:= <depart> to <final> do <instruction>;Cette instruction permet
d'exécuter une ou plusieurs autres instructions un nombre déterminé de fois.
Une variable sert de compteur. Les expressions <départ> et <arrivée>peuvent
être des constantes, des variables ou des expressions calculées. A chaque
itération, le compteur change de valeur et, lorsque la limite est atteinte, l
’exécution séquentielle reprend.
COMPARAISON DES
INSTRUCTIONS
• Ordre d'exécution
Tous les langages considérés exécutent normalement leurs instructions
dans un ordre correspondant à l'ordre des lignes du programme
(ordre séquentiel). Dès qu'une instruction est terminée, l'instruction
suivante du texte est exécutée. Cependant, tous les langages
possèdent des instructions de déroutement qui permettent de
changer l'ordre naturel d'exécution pour réaliser des boucles. Ces
instructions de déroutement peuvent être conditionnelles. Il est alors
malaisé de prévoir l'ordre exact dans lequel les instructions vont
s'enchaîner puisque le déroulement du programme dépend de
l'évaluation de conditions dont les valeurs changent constamment
pendant l'exécution du programme.
COMPARAISON DES
INSTRUCTIONS
• Les opérateurs
Tous les langages acceptent évidemment les opérateurs classiques comme +, -, x, etc…
Les parenthèses sont utilisées pour changer l'ordre d'évaluation des expressions.
Cependant chaque langage possède certaines particularités, parfois subtiles,qui le
singularisent.
• Conditions:
une condition est une expression qui peut prendre deux états (vrai/faux) et qui est
utilisée dans les instructions conditionnelles par exemple.
Il peut s􀀂agir d􀀂une variable booléenne, d'une expression formée à partir des
opérateurs de comparaison (=, >,<, etc…), ou des opérateurs logiques (and, or,
etc…). Notons qu􀀂en "C" et en JAVA, une condition est une expression numérique
qui est fausse si sa valeur est zéro et vraie lorsque sa valeur est différente de 0. Il
est possible de mélanger des opérateurs de comparaison (<, >, !=, ==, etc…) ou
logique (&&, ||, !) avec des expressions numériques car le résultat de ces
opérateurs est un entier (0 si faux et 1 si vrai).
Instructions de répétition
Instructions de répétition conditionnel
while <condition> do <instruction> do <instruction>;
while <condition>;
Ces deux expressions permettent d'exécuter conditionnellement une instruction.
La seconde version, exécute toujours l'instruction au moins une fois avant de tester la condition, tandis
que la première n'exécute l'instruction que si, au départ, la condition était vraie. Notons que pour
éviter une boucle sans fin, il faut toujours que l'instruction conditionnelle finisse par modifier la
condition logique.
Aigui l lage selon une valeur
(case ou switch) case <selecteur> of
cas1: <instruction>;
cas2: <instruction>;
cas3,cas4…: <instruction>;…
[otherwise <instruction>]End
• Lorsque le contenu de la variable <selecteur> coïncide avec l’une des valeurs definies pour chacune
des rubriques, l’instruction correspondante est exécutée.
• en "C" et en JAVA, la valeur du sélecteur est comparée successivement à chacune des expressions
cas1, …, casn. Et termine par "break".
LA STRUCTURATION DES
DONNEES: LES TYPES
•
Les premiers langages comme le FORTRAN ou le BASIC n'admettent que des structures prédéfinies et
n'offrent pas la possibilité d'en construire d'autres Par contre, certains langages plus modernes comme
l'Algol ou le Pascal et le C permettent de concevoir et de manipuler facilement des structures de données
très complexes. On parle du type d'une donnée en faisant référence à la façon dont l'information y est
codée.
•
Lorsqu'un langage permet au programmeur de définir ses propres structures de données en plus des
algorithmes de traitement, la programmation prend une nouvelle dimension.
•
Concevoir un programme ne consiste plus seulement à coder des instructions mais aussi à définir des
structures de données bien adaptées aux problèmes.Une stratégie de travail consiste donc à définir
parallèlement la forme deses objets (les types des données) et les méthodes permettant de les manipuler
(les algorithmes).
•
Les types simples: Un type simple associe un nom avec un seul objet élémentaire comme un nombre ou
une lettre. Parmi les types simples, on trouve les nombres entiers, les nombres réels, les caractères, les
booléens et les pointeurs.
type entier (nombre entier sans décimale) et le type réel (nombre avec décimales)
•
Pour les entiers, il existe deux dynamiques possibles􀀂:
•
-32 768 à +32 767 (entiers simples 2 octets)
•
-2 147 483 648 à +2 147 483 647 (entiers longs 4 octets).
•
les réels, les choses sont plus délicates. La "simple précision" permet généralement d'effectuer les calculs
avec 5 à 6 chiffres significatifs dans une dynamique de
Mais il existe bien d'autres représentations pour
les nombres réels (double, triple, quadruple,
extended, etc…). Leurs caractéristiques
dépendent de l'installation. Par exemple, la
précision étendue ("extended") des
coprocesseurs arithmétiques récents permet
de travailler sur une dynamique
cycle de vie d’un programme
les différentes étapes de la vie d’un programme ´écrit en langage compilé :
1. Conception du programme : Analyser l’application `a programmer pour mettre en ´évidences
les types de données `a manipuler et les opérations `a effectuer, choisir les meilleurs
algorithmes pour réaliser ces opérations, d´ecider de la manière de présenter les résultats `a
l’utilisateur du programme, quel langage est le mieux adapté `a aux taches qui doivent ˆêtre
réalisées par le programme, etc ...C’est une ´étape cruciale qui peut ˆêtre faite sans
ordinateur sous la main...
2. Ecriture du programme : Si la première ´étape a ´été faite avec soin, il s’agit uniquement de
traduire les résultats de la conception en un programme ´écrit dans le langage de programmation
choisi, ici le C.
3. Compilation : C’est l’´étape de traduction vers le langage machine. Il vérifie si le programme est
lexicalement, syntaxiquement et sémantiquement correct. Si c’est le cas, il produit le code
exécutable, sinon, il signale les erreurs en les localisant le plus précisément possible dans le texte
du programme et vous renvoie donc `a l’´étape 2.
4. Exécution : Le code exécutable produit `a l’issu de la compilation peut ˆêtre lancé, c’est-`a-dire
soumis au système d’exploitation pour ˆêtre exécuté. Tant que le texte du programme n’est pas
modifiee, il n’est pas nécessaire de recompiler avant de lancer l’ exécutable. Il se peut que l ’
exécution enclenche des erreurs non détectées par le compilateur. Notez bien qu’un programme
qui compile sans erreurs n’est pas forcement correct : il se peux qu’il ne satisfasse pas le cahier
des charges de l’application `a programmer.... on retourne dans ce cas `a l’ etape 1 ou 2...
cycle de vie d’un programme
Les bases de la programmation en
C
• Les composants du langage C
• Les “mots” du langage C peuvent ˆêtre classés en 6 groupes
´élémentaires :
• – les mots-clés,
• – les constantes,
• – les identificateurs,
• – les chaines de caractères,
• – les opérateurs,
• – les signes de ponctuation,
auxquels il convient d’ajouter les commentaires au code source.
Le langage C contient 32 mots-clés
•
Le langage C contient 32 mots-clés (selon la norme ANSI C) qui ne peuvent pas être
utilisés comme identificateurs :
– les spécificateurs de stockage :
• auto registre static typedef
– les spécificateurs de type :
• char double enum float int long short signed struct
• union unsigned void
– les qualificateurs de type :
• const volatile
• – les instructions de contrôle :
break case continue default do else for goto if switch while
– les autres :
• return sizeof
Code d’un programme
#include<stdio.h>
int main(){
int n=45;
double x=1e-8+100;
char lettre=’A’;
char * chaine="est le double de";
printf("\n1. petite chaine toute simple sans argument");
printf("\n2. Le code ASCII du caract`ere %c est %d ",lettre,lettre);
printf("\n3. L’entier %d a pour code octal %o et pour code h´exad´ecimal %x",n,n,n);
printf("\n4. %s %d %s %d","Le nombre",n*2,chaine,n);
printf("\n5. %.3f est le nombre flottant %.10e pr´ecis´e au milli`eme",x,x);
printf("\n6. Utiliser le format %%f n’est pas suffisant pour afficher x:\n son utilisation donne %f",x);
printf("\n7. |%-6s||%6s|\n", "un","deux");
return 0;
}
Les langages du web
Les langages vus précédemment servent
généralement à créer des programmes locaux, à
exécuter sur votre machine. Mais qu'utilise-t-on
pour les pages et les applications web.
HTML
• Le HTML (Hyper-Text Markup Language), c'est tout simplement le langage
dans lequel sont écrites les pages web ; ainsi, vous pouvez créer vos
propres pages web rien qu'avec le bloc-note (notepad.exe) ou tout autre
éditeur de texte. Il vous suffit pour cela d'entrer les instructions comme si
c'était du texte et d'enregistrer le texte ainsi obtenu avec une extension
*.htm ou *.html.
• Relativement simple, ce langage repose sur un système de balises, comme
par exemple <head>. Mais nul besoin de les connaître pour réaliser une
page de base. En effet, il existe de nombreux éditeurs de pages web qui
vous permettent de créer des pages web comme on crée un document
sous Word (Mozilla NVU, Macromedia Dreamweaver, etc.). Sachez
toutefois que le code généré par ces éditeurs n'est pas des plus propres.
• À noter qu'on ne parle pas de langage de programmation pour HTML mais
de langage de présentation.
HTML
CSS
• Le CSS (Cascading Style Sheet = Feuille de Style en cascade)
est utilisé pour alléger le code HTML. Pour cela, on crée
généralement un fichier *.css dans lequel on entre toutes les
instructions codant le style de la page web (couleur d'arrièreplan, type de blocs, de bordures, etc.). En faisant appel à ce
fichier dans la page HTML, on peut désigner un style lourd et
complexe avec une simple petite balise. De plus, si la CSS est
employée dans un site entier (comme c'est toujours le cas), il
suffit de mettre à jour la CSS pour refaire le design du site en
entier.
JavaScript
• Toujours pour le net, le JavaScript est plutôt simple et n'a pas besoin
d'être compilé. On insère le code dans la page web et le navigateur
l'interprète tout seul comme un grand. Les principales difficultés sont la
connaissance des différents objets et événements d'une page web tout en
restant compatible avec les différents navigateurs. Ainsi, le "L'ordi pour
Rantanplan" qui défile dans la barre de statut a été créé en insérant 11
lignes (ci-dessous) dans le code HTML de la page. À ne pas confondre avec
le JAVA, il permet notamment de changer l'arrière-plan d'une page web ou
ses différents couleurs, d'afficher l'heure, de faire des calculs à partir
d'éléments de formulaire… De nos jours, il est souvent combiné avec XML
et des méthodes pour charger une page web en Javascript de manière
asynchrone pour réaliser des pages web se comportant comme des
applications locales. Le terme à la mode pour désigner ces techniques est
"AJAX" (Asynchronous Javascript And XML).
JavaScript
PHP
• Le PHP (PHP : Hyper-text Preprocessor) est un langage exécuté côté
serveur et non plus côté client comme le JavaScript. Pour cela, on place
sur le serveur distant (équipé de PHP) des pages web avec l'extension
*.php. Ces pages contiennent en général du code PHP capable de générer
une page HTML classique selon les paramètres envoyés par l'utilisateur
et/ou contenus dans une base de données annexe. Ces instructions sont
donc exécutées sur le serveur distant, ce qui génère une page HTML qui
est ensuite envoyée à l'utilisateur (côté client).
• Exemple : un JavaScript est incapable d'afficher à l'écran l'adresse IP de
l'utilisateur. Par contre, le langage PHP dispsoe d'une variable
d'environnement correspondant à l'IP de l'utilisateur. On va donc insérer
un bout de code PHP (qui permet d'écrire l'IP) dans une page web (en
supposant que le serveur gère le PHP). L'utilisateur verra ainsi son adresse
IP s'afficher.
SQL
• SQL (Structured Query Language) est un langage d'interrogation de base
de données très populaire. Il constitue aujourd'hui une norme
implémentée par de nombreux SGBDs (Systèmes de Gestion de Bases de
Données), comprenez : des serveurs de bases de données. On citera
notamment Oracle, PostgreSQL et MySQL.
• MySQL est souvent utilisé pour stocker les informations vitales d'un site
web (exemple : les paramètres des membres enregistrés). Il est quasiindissociable du PHP. L'association des deux permet en effet de réaliser
des sites dits "dynamiques", (exemples : forum). Toutefois, PHP peut
également contacter d'autres bases de données, à commencer par
PostGreSQL et Oracle.
• On citera également en vrac le XML (langage à balise strict permettant de
stocker n'importe quelles données) et l'ASP (PHP sauce Microsoft).
Téléchargement