ALGORITHMIQUE ET PROGRAMMATION EN LANGAGE C Mohamed Ali Mahjoub medalimahjoub@g

ALGORITHMIQUE ET PROGRAMMATION EN LANGAGE C Mohamed Ali Mahjoub medalimahjoub@gmail.com mohamedali.mahjoub@eniso.u-sousse.tn Premières Années EI Eniso 2021-2022 2 M. MAHJOUB 2021-2022 Apple - Macintosh Alain Turing 1912-1954 ENIAC 1947 John Von Numan 1903-1957 Machine de Turing Machine séquentielle à programme enregistré • 1947 : premier ordinateur ENIAC • Années 1950 premiers ordinateurs commercialisés : les transistors • Années 1960 mini ordinateurs : les circuits intégrés • Années 1970 micro ordinateurs : VLSI (very large scale integration) • 1980 : Réseaux locaux • 1990 : Internet web 1.0 • 2000 : Internet web 2.0 :web collaboratif • 2010 : web 3.0 Internet of Things – Villes intelligentes, maisons intelligentes 3 Historique M. MAHJOUB 2021-2022 • Programmation procédurale (C, cobol, pascal…) • Programmation orientée objet (C++, java, python, …) 4 Structure d’un ordinateur Bus système Processeur RAM Mémoire centrale Interfaces E/S, contrôleurs, chipset, USB Périphériques E/S Mémoire cache ROM BIOS Mémoires de masse (disque dur, CD, …) Interface réseau Ecran Clavier Souris M. MAHJOUB 2021-2022 5 Architecture en couches Langage machine Mémoire Processeur Périphériques Bus Système d’exploitation Compilateurs Editeurs Interpréteurs de commandes Logiciels de développement et d’exploitation Jeux Applications diverses Logiciels et applications Programmes systèmes Partie matérielle Outils systèmes MOVE, ADD, etc. Navigateurs, antivirus, suite bureautique, etc. M. MAHJOUB 2021-2022 6 Historique (Operating Systems) M. MAHJOUB 2021-2022 7 Historique (langages) M. MAHJOUB 2021-2022 • Au milieu des années 1980 la popularité du langage était établie. • De nombreux compilateurs ont été écrits, mais comportant quelques incompatibilités portant atteinte a l'objectif de portabilité (devcpp gratuit sur le web). • Il s'est ensuivi un travail de normalisation effectué par le comite de normalisation X3J11 de l'ANSI qui a abouti en 1988 avec la parution par la suite du manuel : – < The C programming Language – 2ème édition >. 8 Présentation du langage C Historique M. MAHJOUB 2021-2022 • Langage polyvalent permettant le développement de systèmes d'exploitation, de programmes applicatifs scientifiques et de gestion. • Langage structuré. • Langage évolué qui permet néanmoins d‘effectuer des opérations de bas niveau (< assembleur d'Unix >). • Portabilité (en respectant la norme !) due a l'emploi de bibliothèques dans lesquelles sont reléguées les fonctionnalités liées a la machine. • Grande efficacité et puissance. • Compatible avec le système Unix • Langage permissif ! ! 9 Présentation du langage C Intérêts M. MAHJOUB 2021-2022 • Clarté • Simplicité • Modularité • Extensibilité • Langage Haut Bas niveau • Code optimisé 10 Présentation du langage C Qualités M. MAHJOUB 2021-2022 • Jeu de caractères utilisés • Mots réservés • Structure d'un programme C • Compilation et Edition des liens 11 Généralités M. MAHJOUB 2021-2022 • 26 lettres de l'alphabet (minuscules, majuscules) • chiffres 0 a 9 • caractères spéciaux : – ! * + \ " < # ( = | { > – % ) ~; ] / ^ - [ : , ? – & _ - ‘ . (espace) ( _ underscore) • séquences d‘échappement : – passage a la ligne (\n), – tabulation (\t), – backspace (\b). 12 Généralités : Jeu de caractères M. MAHJOUB 2021-2022 • auto extern sizeof break float • case for char goto switch • Static const if typedef continue • int default long unsigned do • register void double return volatile • else short while enum signed • union struct 13 Généralités : mots réservés M. MAHJOUB 2021-2022 • une ou plusieurs fonctions dont l'une doit s'appeler main stockées dans un ou plusieurs fichiers. • Fonction : – entête (type et nom de la fonction suivis d'une liste d'arguments entre parenthèses), – instruction composée constituant le corps de la fonction. • Instruction composée : délimitée par les caractères { et } • Instruction simple : se termine par ; • Commentaire : encadré par les délimiteurs /* et */ • Instruction préprocesseur : commence par # 14 Structure d’un programme C M. MAHJOUB 2021-2022 #include <stdio.h> /*directive de compilation */ #define PI 3.14159 /* calcul de la surface d'un cercle */ main() { float rayon, surface; float calcul(float rayon); printf("Rayon = ? "); scanf("%f", &rayon); surface = calcul(rayon); printf("Surface = %f\n", surface); } 15 Exemple d’un programme C /* definition de fonction */ float calcul(float r) { /* definition de la variable locale */ float a; a = PI * r * r; return(a); } M. MAHJOUB 2021-2022 16 Compilation et édition des liens Compilateur C : 1- préprocesseur 2- compilation 3- édition des liens Cycle de vie d’un programme M. MAHJOUB 2021-2022 • Le langage contient des types de base qui sont les entiers, les réels simple et double précision et les caractères que l'on identifie a l'aide des mots-clés int, float, double et char respectivement. • De plus il existe un type ensemble vide : le type void. • Les mots-clés short et long permettent d'influer sur la taille mémoire des entiers et des réels. • Type tableau T[N] 17 Les types simples et structurés M. MAHJOUB 2021-2022 • Octet (ou Byte) = 8 bits 18 Unités de mesure M. MAHJOUB 2021-2022 1 0 0 0 1 1 0 0 • Chaque caractère est représenté dans la mémoire par 1 octet • D’où : avec 1 octet on peut représenter (coder) 256 caractères • Codage ASCII • Bits {0,1} 19 M. MAHJOUB 2021-2022 • La taille d'un entier par défaut est soit 2 soit 4 octets (dépend de la machine). 4 octets est la taille la plus courante. • La taille d'un entier court est en général 2 octets et celle d'un entier long 4 octets. • La taille d'un entier court est inférieure ou égale a la taille d'un entier par défaut qui est elle-même inférieure ou égale a celle d'un entier long. • Les types short int et long int peuvent être abrégés en short et long. • float est le type des réels en simple précision • double est le type des réel double précision • Le type char occupe un octet. Un caractère est considéré comme un entier qu'on pourra donc utiliser dans une expression arithmétique. 20 Structures simples : remarques M. MAHJOUB 2021-2022 • scanf(), printf() : lecture et écriture formatée de données • Exemples : 1- int x,y; printf(‘’donner deux entiers’’); scanf(‘’%d%d’’,&x,&y); 2- int JOUR, MOIS, ANNEE; float x; scanf("%d %d %d%f", &JOUR, &MOIS, &ANNEE,&x); 3- int A = 4; int B = -7; printf("%d * %d = %d\n", A, B, A*B); 4- char x=‘a’; scanf(‘’%c’’,&x); printf(‘’%c’’,x); 21 Structures simples : entrées/sorties M. MAHJOUB 2021-2022 #include <stdio.h> // lire et afficher trois variables main() { float A; int B; char C; printf(‘’donner un réel ’’); scanf(‘’%4.2f’’,&A); /*%4.2f : A est sur 4 chiffres dont deux après la virgule*/ printf(‘’donner un entier ’’); scanf(‘’%d’’,&B); printf(‘’donner un caractère ’’); scanf(‘’%c’’,&C); printf(‘’A = %f B = %d C = %c’’, A, B, C); } 22 Lecture/écriture : Exemple M. MAHJOUB 2021-2022 Ecrire un programme en langage C qui permet de saisir deux entiers naturels A et B et qui réalise leur permutation, 1- En utilisant une variable intermédiaire 2- sans utiliser une variable intermédiaire Exemple : A =50 B = 100 Affichage A=100 B=50 23 Exercice M. MAHJOUB 2021-2022 • if (expression) partie-alors [else partie-sinon] • La partie-alors et la partie-sinon peuvent être indifféremment une instruction élémentaire ou composée. • La partie-alors sera exécutée si la valeur de l'expression • entre parenthèses est non nulle. Sinon, si le test comporte une partie-sinon c'est celle-ci qui sera exécutée. 24 Les structures de contrôle : Les conditions M. MAHJOUB 2021-2022 • La partie-alors et la partie-sinon peuvent être indifféremment une instruction élémentaire ou composée. • La partie-alors sera exécutée si la valeur de l'expression entre parenthèses est non nulle. Sinon, si le test comporte une partie-sinon c'est celle-ci qui sera exécutée. 25 Les conditions : exemples M. MAHJOUB 2021-2022 • Si plusieurs tests sont imbriqués, chaque partie else est reliée au if le plus proche qui n'est pas déjà associé à une partie else. 26 Les conditions : exemples if( x >=16 ) printf( "très bien" ); else if( x >=14 ) printf( "Bien" ); else if( x >=12 ) printf( "Assez B." ); else printf( "Passable" ); if( x >=16 ) { printf( "très bien" ); else if( x >=14 ) { printf( "Bien" ); else if( x >=12 ) { printf( "Assez B." ); else printf( "Passable" ); }} } M. MAHJOUB 2021-2022 • Ecrire un programme en langage C qui lit deux réels quelconques A et B et qui permet de résoudre l’équation : • AX + B = 0 27 Les conditions ; exemple M. MAHJOUB 2021-2022 • Ecrire un programme en langage C qui lit trois réels quelconques A, B et C et qui permet de résoudre l’équation : • AX² + BX + C = 0 • #include <math.h> • On se donne la fonction racine carré : sqrt 28 Les conditions ; exemple M. MAHJOUB 2021-2022 Exercice Ecrire un programme C qui lit l’heure de départ d’un train (heure et minutes HD, MD) et la durée de trajet (heure et uploads/Industriel/ support-c-2021-2022-part-1.pdf

  • 34
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager