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 sagir dune variable booléenne, d'une expression formée à partir des opérateurs de comparaison (=, >,<, etc…), ou des opérateurs logiques (and, or, etc…). Notons quen "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).