FLSI602 Génie Informatique et Réseaux

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

La boucle for : init7.c et init71.c
Introduction au Langage C,C++
A RECUPERER EN ENTRANT Le polycopié de Caml Partie 1
Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour.
Rappels C.
Développement logiciel sur micro-contrôleurs PIC en C
Introduction au langage C
Cours n° 1 Présentation du langage C++
GEF 243B Programmation informatique appliquée Expressions et opérateurs §
GEF 243B Programmation informatique appliquée Expressions et opérateurs.
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Types, variables et constantes.
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
C.
M. BENJELLOUN : Info II Mohammed BENJELLOUN Service dInformatique Faculté Polytechnique de Mons
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
FLSI602 Génie Informatique et Réseaux
FLSI602 Génie Informatique et Réseaux
FLSI602 Génie Informatique et Réseaux
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
Langage C Révision.
Récursivité.
Points importants de la semaine Les boucles. Les types arithmétiques. Les opérateurs.
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
TRAITEMENT DE STRUCTURES
1 Les pointeurs et quelques rappels sur certains éléments du langage C.
Développement logiciel pour microcontrôleurs PIC
Points importants de la semaine Le préprocesseur. La conversion de types. Les fonctions.
Principes de programmation
Notre calendrier français MARS 2014
IFT 6800 Atelier en Technologies d’information
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
C'est pour bientôt.....
Veuillez trouver ci-joint
Les Opérateurs Ils régissent toutes les opérations ou transformations sur les valeurs des variables. Opérateur d'affectation Opérateurs arithmétiques Opérateurs.
NORMALISATION DES LANGAGES DE PROGRAMMATION des Automates Programmables Industriels CEI
L’essentiel du langage C
Introduction au C.
Structures des données
2.1 - Historique Chapitre 2 : Introduction au langage C++
Programmer en langage c
CALENDRIER-PLAYBOY 2020.
Algorithmique Les structures Rappel L'enchaînement séquentiel
LES PILES ET FILES.
Notions de pointeurs en C
CYCLE 6 : FONCTIONS Faire un programme en C avec des FONCTIONS 1- A quoi servent les FONCTIONS ? 2- Comment écrire un programme avec FONCTIONS ? 3- Comment.
et quelques rappels sur certains éléments du langage C
Les adresses des fonctions
Ecrire des expressions arithmétiques et logiques
SIF-1053 Architecture des ordinateurs
ALGORITHMIQUE ET PROGRAMMATION C
Un survol du language C.
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
Cours n° 1 Présentation du langage C++
Microcontrôleurs PIC. 1ère séance Présentation du PIC16F876 Outils de programmation du PIC Le langage C Exemples d’applications simples 2ème séance Présentation.
L’ histoire: 1976: - Bell Labs abandonne le projet MULTICS. - Ken Thompson, programmeur système chez Bell Labs, se trouve désoeuvré. MULTICS devait être.
B.Shishedjiev - Affectation1 Expressions et affectation Comment produire des nouvelles valeurs.
Introduction au langage C : Structures de contrôle 1 ère année Génie Informatique Dr Daouda Traoré Université de Ségou
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.
Programmation en C.
Langage de programmation
PRO-1027 Programmation Scientifique en C
pour les programmeurs en C++ Java 2 Part 1 3 Histoire de Java Projet de connexion des machines: 1991 Le nom Java a été introduit dans un café Développé.
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Introduction au langage C
C++ BY AURÉLIEN MODULO MARION. PLAN DES TROIS PRÉSENTATIONS C++ avancé C++ orienté objet Bases de C++
Informatique 2A Langage C 1 ère séance.
Transcription de la présentation:

FLSI602 Génie Informatique et Réseaux Alberto Bosio alberto.bosio@lirmm.fr www.lirmm.fr/~bosio/FLSI602

Agenda langage de programmation C UNIX/Linux Réseau

Bibliographie B.W. Kernighan, D.M. Ritchie, “Le langage C (2ème édition)”, Dunod, 2000 Internet …

Historique Histoire du C est très liée à l'histoire du système UNIX. En 1969, la 1ère version du système UNIX voit le jour programmée en assembleur. Ken Thompson créa un nouveau langage de programmation, nommé B. En 1971, création du successeur de B, nommé C, créé par Dennis Ritchie.

Historique En 1983, un standard pour le langage C est créé : la norme ANSI (American National Standards Institute). La plupart des compilateurs (Borland, Microsoft, GNU CC...) utilisent ce standard. un programme écrit en ANSI C est compilable presque partout.

Structure d'un programme En langage C <directives de précompilation> <définitions de types de donnes> <prototypes de fonctions> <définitions de variables globales> <définitions de fonctions> Structure d'une fonction <type> nomFonction(<paramètres>) { <définition de variables> <instructions> }

Structure d'un programme En langage C Le partie principale du programme est une fonction nommée main. <type> main(<paramètres>) { <définition de variables > <instructions> }

Un premier exemple Calcul du volume d’une sphère /* Directive de précompilation */ #include <stdlib.h> /* Fonction principale */ void main(void) { const float PI = 3.14159; /* Définition d’une constante */ float rayon; /* Définition d’une variable */ float volume; /* Définition d’une variable */ volume = 4*PI*rayon*rayon*rayon / 3; }

Un premier exemple Calcul du volume d’une sphère /* Directive de précompilation */ #include <stdlib.h> /* Fonction principale */ void main(void) { const float PI = 3.14159; /* Définition d’une constante */ float rayon; /* Définition d’une variable */ float volume; /* Définition d’une variable */ volume = 4*PI*rayon*rayon*rayon / 3; } Commentaire

Un premier exemple Calcul du volume d’une sphère /* Directive de précompilation */ #include <stdlib.h> /* Fonction principale */ void main(void) { const float PI = 3.14159; /* Définition d’une constante */ float rayon; /* Définition d’une variable */ float volume; /* Définition d’une variable */ volume = 4*PI*rayon*rayon*rayon / 3; } constant

Un premier exemple Calcul du volume d’une sphère /* Directive de précompilation */ #include <stdlib.h> /* Fonction principale */ void main(void) { const float PI = 3.14159; /* Définition d’une constante */ float rayon; /* Définition d’une variable */ float volume; /* Définition d’une variable */ volume = 4*PI*rayon*rayon*rayon / 3; } variable

Un premier exemple Calcul du volume d’une sphère instructions /* Directive de précompilation */ #include <iostream.h> /* Fonction principale */ void main(void) { const float PI = 3.14159; /* Définition d’une constante */ float rayon; /* Définition d’une variable */ float volume; /* Définition d’une variable */ volume = 4*PI*rayon*rayon*rayon / 3; } instructions

Les types, variables et constantes Les commentaires /* Sur plusieurs lignes : en C, C++ ou Java */ Les types de données Entiers : short, int, long int, unsigned short, . . . Réels : float, double, long double Caractères : char, unsigned char

Les types, variables et constantes Size Costant <limits.h> Min Max Char 1 CHAR_MIN CHAR_MAX 255 signed char SCHAR_MIN SCHAR_MAX -127 127 Short 2 SHRT_MIN SHRT_MAX -32767   32767 unigned short USHRT_MAX 65535 Int 4 INT_MIN INT_MAX -2147483647 2147483647 Unsigned int UNIT_MAX 4294967295

Les types, variables et constantes Déclarations et initialisation de variables int jour, mois, annee = 2000; double puissance = 10.4; char reponse = ‘A’; int test = 10;

Les types, variables et constantes Le type char char reponse = ‘A’; printf(“%c“, response); /* A */ printf(“%d“, response); /* 65 */ char reponse = 65; reponse = 65 + 32 ; printf(“%c“, response); /* a */

Les types, variables et constantes Le type char char reponse = ‘A’; printf(“%c“, response); /* A */ printf(“%d“, response); /* 65 */ char reponse = 65; reponse = 65 + 32 ; printf(“%c“, response); /* a */ ASCII Code (http://www.asciitable.com/)

Les types, variables et constantes Définition d’une constante Directive de précompilation en langage C #define SIZE 100 Mot clef réservé « const » en langage C const int SIZE = 100;

Les types, variables et constantes Les constantes littérales Une constante de type caractère est entourée de simple-quotes ‘A’, ‘b’, ‘\n’ (retour à la ligne), ‘\t’ (tabulation) Une constante de type chaîne est entourée de double-quotes “il est trop tard\n“, “Janvier\tFevrier\tMars“ Les énumérations Une énumération permet de définir un nouveau type enum Saison { Printemps = ‘P’, Ete = ‘E’, Automne = ‘A’, Hiver = ‘H’ }; Saison S = Printemps;

Les types, variables et constantes La définition d’un nouveau type Le mot clef réservé « typedef » typedef int typeEntier; . . . typeEntier i; // int i; i = 5; typedef float typeTableau[10]; typeTableau notes; // float notes[10]; notes[4] = 10.5;

Les différents types d’opérateurs Opérateur d’affectation Symbole « = » Opérateurs arithmétiques Symboles « + », « - », « * », « / », « % » + addition - soustraction * multiplication / division % reste de la division (modulo)

Les différents types d’opérateurs Opérateurs bit à bit Symboles « & », « ^ », « | », « << », «  >> » 26 & 150 = (00011010 & 10010110) = 00010010 = 18 /* ET */ 26 ^ 150 = (00011010 ^ 10010110) = 10001100 = 140 /* OU exclusif */ 26 | 150 = (00011010 | 10010110) = 10011110 = 158 /* OU */ 13 << 3 = (00001101 << 3) = 01101000 = 104 /* Décalage */ 150 >> 2 = (10010110 >> 2) = 00100101 = 37 /* Décalage */

Les différents types d’opérateurs Opérateurs d’incrémentation Pour simplifier certaines expressions ++i; ou i++; /* i = i + 1; */ --i; ou i--; /* i = i - 1; */ i = ++j; /* j = j + 1; i = j; pré-incrémentation */ i = j++; /* i = j; j = j + 1; post-incrémentation */ Opérateurs d’affectation élargis Pour simplifier certaines affectations i = i + 4; /* i += 4; */ temps = temps * k; /* temps *= k; */

Les différents types d’opérateurs Les opérateurs conditionnels if (ok == true) . . . /* Test d’égalité */ if (ok != false) . . . /* Test d’inégalité */ if (i < 4) . . . if (i <= 4) . . . if (i >= 4) . . . Les opérateurs logiques if ((ok == 1) && (i < 4)) . . . /* si ok est 1 ET i est inférieur à 4 */ if ((ok == 1) || (i < 4)) . . . /* si ok est 1 OU i est inférieur à 4 */ if (!(ok == 1)) . . . /* s’il est faux que ok soit 1 */

Les différents types d’opérateurs Les opérateurs de « cast » Pour convertir explicitement le type de certaines données double x = 14.5; int i; i = int(x); ou i = (int) x; /* i=14;*/ i = 10; x = i / 4; /* x = 2; */ x = double(i) / 4; /* x = 2.5; */

Les entrées / sorties en C Comment afficher des informations ? La fonction « printf » Définition dans la bibliothèque « stdio.h » Syntaxe : printf(<un format d’affichage>, <une liste d’expressions>) int qt = 4; float pr = 10.5; printf(“quantite = %d et prix = %f”, qt, pr); /* quantite = 4 et prix = 10.5 */ Un format d’affichage est une chaîne comportant Des caractères à afficher tels quels Des codes de format : « %d », « %f »

Les entrées / sorties en C Comment afficher des informations ? Les différents codes de format int i = 6; printf(“entier = %d”, i); float x = 2.3; printf(“réel = %f”, x); char c = ‘A’; printf(“cara = %c”, c); char *m = “oui”; printf(“mes = %s”, m);

Les entrées / sorties en C Comment lire des données au clavier ? La fonction « scanf » Définition dans la bibliothèque « stdio.h » Syntaxe : scanf (<un format de lecture>, <une liste d’adresses>) int i; float x; scanf(“%d %f”, &i, &x); pour lire au clavier un entier et un réel placés respectivement dans les variables « i » et « x »

L’exécution conditionnelle /* Exemple de branchement conditionnel */ if (a > b) { plusGrand = a; plusPetit = b; } else { plusGrand = b; plusPetit = a; printf (“%d est plus grand que %d”, plusGrand, plusPetit); if ((a >= b) && (a >= c)) if (b >= c) else plusGrand = c;

L’exécution conditionnelle /* Exemple de « switch » en C */ int mois, nbjours, annee; switch(mois) { /* Mois de 30 jours */ case 4 : case 6 : case 9 : case 11 : nbjours = 30; break; /* Mois de 31 jours */ case 1 : case 3 : case 5 : case 7 : case 8 : case 10 : case 12 : nbjours = 31; break; /* Mois de février */ case 2 :{ if (estBissextile(annee)) nbjours = 29; else nbjours = 28; break; } default : printf (“Mois non valide”); } /* Fin du switch */

L’exécution itérative Trois types de boucles La boucle « while  » compteur = 1; while (compteur <= 5) { printf (“boucle : %d \n”,compteur); compteur++; } La boucle « for  » for(compteur = 1; compteur <= 5; compteur++) La boucle « repeat » do { printf (“Voulez-vous recommencer ? ”); scanf (“%c”, &reponse); } while ((reponse == ‘o’) || (reponse == ‘O’));

Modes de transmission des arguments La transmission par valeur void echanger(int a, int b) { int tmp = a; a = b; b = tmp; printf (“%d - %d\n”,a, b); } void main() { int i = 4, j = 8; echanger(i, j); /* a sera une copie de i, et b une copie de j */ printf (“%d - %d\n”,i, j);

Modes de transmission des arguments La transmission par référence (adresse) void classer(int a, int b, int* min, int* sup) { if (b > a) { *min=a; *sup=b; } else { *min=b; *sup=a; } void main() { int i = 4, j = 8, m, s; classer(i, j, &m, &s); printf (“%d - %d\n”,m, s);

Les fonctions Fonction retournant une valeur Fonction de type « void » int min(int a, int b) { int t; if (a < b) t = a; else t = b; return (t); } Fonction de type « void » void calculer_min() { int a, b; printf (“Donnez deux entiers : ”); scanf (“ %d %d ” , &a ,&b); printf (“Le min entre %d et %d est %d ”, a, b, min(a,b));

Les tableaux en C Tableaux unidimensionnels typedef double Vecteur[10]; double x[10]; Vecteur y; for(int i = 0; i < 10; i++) x[i] = y[i] = 0.0;

Les tableaux en C float vett[10]; index 1 2 3 4 5 6 7 8 9 vett

Les tableaux en C float vett[10]; index 1 2 3 4 5 6 7 8 9 vett 1 2 3 4 5 6 7 8 9 vett vett[4] = 5,4

Les tableaux en C 5,4 float vett[10]; index 1 2 3 4 5 6 7 8 9 vett 1 2 3 4 5 6 7 8 9 5,4 vett vett[4] = 5,4

Les tableaux en C Tableaux multidimensionnels typedef double Matrice[10][5]; double A[10][5]; Matrice B; for(int i = 0; i < 10; i++) for(j = 0; j < 5; j++) B[i][j] = A[i][j];

Les tableaux en C float matr[5][3] 1 2 matr Index de colonne 1 2 3 4 1 2 matr Index de colonne 1 2 3 4 Index de ligne

Les tableaux en C float matr[5][3] 1 2 matr Index de colonne 1 2 3 4 1 2 matr Index de colonne 1 2 3 4 Index de ligne matr[1] [2] = 4,5

Les tableaux en C / C++ 4,5 float matr[5][3] 1 2 matr Index de colonne 1 2 matr Index de colonne 4,5 1 2 3 4 Index de ligne matr[1] [2] = 4,5

Les tableaux Mode de transmission Un tableau n’est jamais transmis par valeur Un tableau est toujours transmis par adresse void initialise(double* t, int n) { int i; for(i = 0; i < n; i++) t[i] = i; } double somme(double* t, int n) { double s; for(i = 0, s = 0.0; i< n; i++) s = s + t[i]; return (s); void main() { double x[2], y[3]; initialise(x, 2); initialise(y, 3); Printf (“%f , %f\n” ,somme(x, 2), somme(y, 3));

Les tableaux Mode de transmission Différents modes de déclaration des fonctions void initialise(double* t, int n); void initialise(double t[], int n); Toutes ces déclarations sont équivalentes

Les chaînes de caractères Sans type prédéfini en langage C #include <string.h> char prenom[64] = “Pierre”; char nom[64] = { ‘J’, ‘o’, ‘y’, ‘c’, ‘e’, ‘\0’ }; strcpy(prenom, “James”); /* Erreur : prenom = “James”; */ strcat(nom, “ ”); strcat(nom, prenom); scanf (“%s”, nom); printf (“%s”, nom);

Les chaînes de caractères Sans type prédéfini en langage C if (nom[0] == ‘A’) … if (strcmp(nom, prenom) < 0) /* Erreur : if (nom < prenom)*/ if (strcmp(nom, prenom) == 0) /* Erreur : if (nom == prenom)*/ printf (“Longueur = %d”, strlen(nom));