Introduction au Langage C,C++

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

La boucle for : init7.c et init71.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.
Programmation Orienté Objet en C++
Rappels C.
Développement logiciel sur micro-contrôleurs PIC en C
Introduction au langage C
Patrick Reuter maître de conférences
C++ 6ème cours Patrick Reuter maître de conférences
Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.
DECLARATION DE VARIABLES
la programmation en langage C
C.
Programmation Orientée Objet (POO)
M. BENJELLOUN : Info II Mohammed BENJELLOUN Service dInformatique Faculté Polytechnique de Mons
Tableaux Certains problèmes nécessitent beaucoup de variables du même type. Exemple : relevé de températures matin et soir dans 10 villes pour 10 jours.
FLSI602 Génie Informatique et Réseaux
FLSI602 Génie Informatique et Réseaux
Initiation à la programmation et algorithmique cours 3
Regrouper des éléments de même type et pouvoir y accéder à laide dun identificateur et dun indice. Objectif des tableaux.
CPI/BTS 2 Programmation Web Introduction au PHP
Récursivité.
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
8PRO100 Éléments de programmation Allocation dynamique de la mémoire.
TRAITEMENT DE STRUCTURES
Base de programmation Script unity en c#.
CYCLE 1 : Saisir – Afficher – Données Déclarer des Constantes dans un programme 1- Rôle de la déclaration de constante 2- Syntaxe de la déclaration de.
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Structures de données IFT Abder Alikacem La classe string Département dinformatique et de génie logiciel Édition Septembre 2009 Département dinformatique.
Structures de données IFT-2000
Points importants de la semaine Le préprocesseur. La conversion de types. Les fonctions.
Points importants de la semaine Les constantes de compilation. Les fonctions.
Principes de programmation
IFT 6800 Atelier en Technologies d’information
Standard Template Library
C++ : variables Déclaration de variables
LANGAGE C LP A2I IUT St DIE
Tableaux Introduction aux tableaux à une dimension. Déclaration, stockage, initialisation et accès en lecture ou en écriture aux composantes d’un tableau.
Structures de données IFT-2000
Types de données fondamentaux
Faculté Polytechnique de Mons
L’essentiel du langage C
Introduction au C.
Stocker plusieurs valeurs de même type dans une variable
2.1 - Historique Chapitre 2 : Introduction au langage C++
Le langage C Rappel Pointeurs & Allocation de mémoire.
Programmer en langage c
9ième Classe (Mardi, 4 novembre) CSI2572. H Nous avons vu comment utiliser les directives #define #ifndef #endif Pour s’assurer de l’inclusion unique.
et quelques rappels sur certains éléments du langage C
Les adresses des fonctions
SIF-1053 Architecture des ordinateurs
ALGORITHMIQUE ET PROGRAMMATION C
Un survol du language C.
Cours LCS N°4 Présenté par Mr: LALLALI
Conception de Programmes - IUT de Paris - 1ère année – Cours 8 – Les entrées/sorties Comment fonctionnent les opérateurs > pour les types élémentaires.
B.Shishedjiev - Affectation1 Expressions et affectation Comment produire des nouvelles valeurs.
Introduction au langage C Les entrées-sorties
Les bases de l’algorithmique
Ecrire 10 fois "Bonjour" sur 10 lignes différentes
Les entrées-sorties élémentaires
Langage de programmation
8PRO107 Éléments de programmation Les adresses et les pointeurs.
PRO-1027 Programmation Scientifique en C
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Introduction au langage C
Informatique 2A Langage C 1 ère séance.
Langage C Structure d'un programme Types Lire Ecrire Tester
Transcription de la présentation:

Introduction au Langage C,C++ UNIVERSITE de METZ Olivier HABERT Maître de Conférences Laboratoire d'Automatique des Systèmes Coopératifs (LASC) http://www.lasc.univ-metz.fr/article.php3?id_article=67

Progression

Introduction au Langage C,C++ Mon Premier Programme en C Début du programme Inclusion de la bibliothèque contenant la fonction printf #include <stdio.h> void main() { printf("Bonjour!\n"); } Point d'entré du programme première instruction Fin du programme

Introduction au Langage C,C++ Définition d'une variable nom: Unique pour chaque variable Commence toujours par une lettre Différenciation minuscule-majuscule type: Conditionne le format de la variable en mémoire Peut être soit un type standard ou un type utilisateur valeur: Peut évoluer pendant l'exécution initialisation grâce à l'opérateur d'affectation

Introduction au Langage C,C++ Types de variable charcaractères int entiers short [int] entiers courts long [int] entiers longs float nombres décimaux double nombres décimaux de précision supérieure long double nombres décimaux encore plus précis unsigned int entier non signé [..] signifie facultatif

Introduction au Langage C,C++ Déclaration d'une variable Type nom_de_la_variable [= valeur] Exemple: int nb; float pi = 3.14; char c = 'a'; long i,j,k; double r = 6.2879821365;

Introduction au Langage C,C++ Affichage de la valeur d'une variable en C printf("format de l'affichage", variables) Exemple int i =8;int j = 10; printf("i vaut: %d j vaut: %d \n",i,j); float r = 6.28; printf("le rayon = %f \n",r); Autres formats: %c caractère %lf double %s chaîne de caractères %e réel en notation scientifique

Introduction au Langage C,C++ Affichage de la valeur d'une variable en C++ cout <<chaîne 1 <<variable 1<<chaîne 2 <<variable 2; Exemple int i =8;int j = 10; cout <<"i vaut:" << i <<"j vaut:"<<j <<'\n'; float r = 6.28; cout<<"le rayon = "<< r <<'\n';

Introduction au Langage C,C++ Instructions de base opérateurs de base +,-,*, /  opérateurs arithmétique de base %  reste d'une division entière ==  test d'égalité != test de différence <, >, <=, >= test de comparaison !  négation ||  ou logique pour évaluer une expression &&  et logique pour évaluer une expression

Introduction au Langage C,C++ Instructions de base opérateurs de base a = 2+3 valeur de a: 5 r = 3%2 valeur de a: 1 a = (3==3) valeur de a: 1 a = (6==5) valeur de a: 0 a = (2!=3) valeur de a: 1 a = (6<=3) valeur de a: 0 a = !1 valeur de a: 0 a =((3==3) || (6<=3)) valeur de a: 1 a =((3==3) && (6<=3)) valeur de a: 0

Introduction au Langage C,C++ Instructions de base boucle pour for(expr1;expr2;expr3) { instructions } expr1: évaluée 1 seule fois en début de boucle expr2: évaluée avant chaque itération. Si vrai alors les instructions de la boucle sont exécutées sinon la boucle est terminée expr3: évaluée à la fin de chaque itération

Introduction au Langage C,C++ Instructions de base boucle pour exemple // somme des 100 premiers entiers int i,s; s= 0 for(i=0;i<=100;i = i+1) { s = s+i; / / ou s+=i; } cout <<"s = "<<s<<'\n';

Introduction au Langage C,C++ Instructions de base boucle tant que while (expression) { instructions; } expression est évaluée avant chaque itération. Si le résultat est vrai alors les instructions sont exécutées sinon on sort de la boucle exemple i =0; n = 20; while (i<n) i++;

Introduction au Langage C,C++ Instructions de base boucle répéter do { instructions; } while (expression) expression est évaluée après chaque itération. Si le résultat est vrai alors les instructions sont exécutées sinon on sort de la boucle exemple i =0; n = 20; i++; } while(i<n)

Introduction au Langage C,C++ Instructions de base instruction conditionnelle simple si alors if (expression) { instructions; } expression est évaluée après chaque itération. Si le résultat est vrai alors les instructions sont exécutées sinon on sort de la boucle. exemple int i =5; int n; if (i<=20) n =0;

Introduction au Langage C,C++ Instructions de base instruction conditionnelle simple si alors sinon if (expression) { instructions1; } sinon instrutions2; } expression est évaluée après chaque itération. Si le résultat est vrai alors les instructions1 sont exécutées sinon on exécute l'ensemble instructions2 exemple int i =5;int n; if (i<=20) n =0; else n=5;

Introduction au Langage C,C++ Instructions de base instruction conditionnelle multiple switch (expression) { case valeur1: instructions1;break; case valeur2: instructions2;break; . case valeur3: instruction3;break; default: instruction4;break; } expression est évaluée. Si le résultat vaut valeur1, alors instruction1 est exécutée et on quitte le switch, sinon si expression vaut valeur2, ……, sinon on va dans default pour exécuter instruction4.

Introduction au Langage C,C++ Instructions de base instruction conditionnelle multiple exemple int c='a'; switch (c) { case 'a': file();break; case 'b': save();break; case 'q': quitter();break; default: beep();break; }

Introduction au Langage C,C++ Instructions de base l'instruction break permet d'interrompre prématurément une boucle et de se brancher vers la première instruction n'appartenant pas à la boucle exemple: int i;int n=20; for (i=0;i<10;i++) { if (n==31) break; n=n+2; } cout <<n<<'\n'; Quand n vaut 31 alors la boucle est interrompue

Introduction au Langage C,C++ Les Pointeurs Deux manières d'utiliser une variable Par son nom adressage direct compilateur réserve de la mémoire pour la variable exemple: int x =17;

Introduction au Langage C,C++ Les Pointeurs Par son adresse adressage indirect une variable de type pointeur contient l'adresse d'une autre variable Le lien entre pointeur et la variable pointée est géré par le programmeur exemple: int x =17; int * px = &x; px pointe vers x

Introduction au Langage C,C++ Les Pointeurs déclaration d'un pointeur type * nom_du_pointeur exemples char *buffer; int *pf; float *ppi;  C'est au programmeur d'initialiser le pointeur

Introduction au Langage C,C++ Les Pointeurs initialisation d'un pointeur Il faut lui fournir l'adresse d'une variable existant en mémoire Il doit pointer vers une zone mémoire réservée par le compilateur comme étant une variable utilisation de l'opérateur d'adressage & int f; int *pf,*pg; pf = &f; pg =(int*)malloc(sizeof(int)); . free(gf); création du lien entre le pointeur et la variable allocation dynamique d'une variable de type int création du lien entre pg et l'espace mémoire réservé libération de l'espace réservé

Introduction au Langage C,C++ Les Pointeurs utilisation de l'opérateur d'indirection * travaille la valeur de la variable pointée exemples int i =8; int *pi; pi = &i; cout <<*pi<<'\n'; *pi = 19; cout <<i<<'\n'; 8 19

Introduction au Langage C,C++ Les tableaux statiques à 1 dimension définition Ensemble de variables de même type, de même nom caractérisées par un index. déclaration type nom_tableau[dimension] exemples: char buffer[80]; int mat[10]; doit être une constante

Introduction au Langage C,C++ Les tableaux statiques à 1 dimension accès aux éléments du tableau Nom_tableau[indice] exemples: buffer[5] = 'c'; mat[6] = 10; le premier élément commence à l'indice 0 !! Les valeurs ne sont pas initialisées !! Les débordements ne sont pas vérifiés

Introduction au Langage C,C++ Les tableaux statiques à 2 dimensions et plus définition Il s'agit d'un tableau de tableaux déclaration type nom_tableau[dim1][dim2]…[dimn] exemples: char buffer[20][80]; int mat[6][10]; char livres[100][60][80];

Introduction au Langage C,C++ Les tableaux statiques à 2 dimensions et plus accès aux éléments nom_tableau[ind1][ind2]…[indn] exemples: livre[30][15][20] = 'c'; mat[5][6] =13; cout << mat[5][6]<<'\n';

Introduction au Langage C,C++ Lien entre le nom d'un tableau à 1 dimension et les pointeurs Nom du tableau = adresse du premier élément du tableau nom_tableau[i] peut s'écrire *(nom_tableau+i) exemples: char buffer[80]; *buffer = 'C'; accès au premier caractère *(buffer + 5) = 'V'; accès au 6 ème caractère

Introduction au Langage C,C++ Lien entre le nom d'un tableau à 2 dimension et les pointeurs un tableau 2d est un tableau de tableau de dimension 1 On peut donc dire que le nom d'un tableau 2d est l'adresse d'un tableau d'adresse de tableaux de dimension 1 On dit aussi qu'il s'agit d'un pointeur de pointeur exemple: int TAB[6][7]; int **p; déclaration d'un pointeur de pointeur p = TAB; initialisation du pointeur de pointeur

Introduction au Langage C,C++ Lien entre le nom d'un tableau à 2 dimension et les pointeurs tableaux d'entiers tableaux de pointeurs vers des tableaux d'entiers

Introduction au Langage C,C++ Initialisation dynamique d'un tableau Tableau une dimension int * t; t = (int*)malloc(20*sizeof(int)); fonction de calcul automatique de la taille d'un entier en octet nom du tableau fonction d'allocation dynamique de la mémoire nombre d'éléments dans le tableau

Introduction au Langage C,C++ Initialisation dynamique d'un tableau Tableau à deux dimensions n*m déclaration dynamique du tableau de n pointeurs et des n tableaux à une dimension de m éléments quelques lignes de code sont nécessaires (voir transparent suivant)

Introduction au Langage C,C++ Initialisation dynamique d'un tableau Tableau à deux dimensions n*m int **TAB,l; TAB = (int**)malloc(n*sizeof(int*)); for (l=0;l<n;l++) { TAB[l] = (int*)malloc(m*sizeof(int)); } désallocation: free(TAB[l]); free(TAB);

Introduction au Langage C,C++ Les structures de données intérêt Rassembler des données hétérogènes caractérisant une entité pour en faire un type utilisateur. exemple: point dans l'espace 3 entiers nœud d'un arbre binaire 2 adresses vers les fils, 3 entiers pour les données du nœud noms et références des pièces mécaniques constituant une voiture 600 tableaux de caractères + 600 entiers pour la référence

Introduction au Langage C,C++ Les structures de données déclaration struct nom_structure { type1 nomchamps1; type2 nomchamps2; . typeN nomchampsN; };

Introduction au Langage C,C++ Les structures de données exemple et utilisation struct pt { int x; int y; int z; char nom; }; main() struct pt p; }

Introduction au Langage C,C++ Les structures de données simplification de l'écriture struct pt { int x; int y; int z; char nom; }; typedef struct pt point; main() point p; } typedef struct pt { int x; int y; int z; char nom; } point; Notations équivalentes

Introduction au Langage C,C++ Les structures de données accès aux données Deux cas de figure On dispose du nom de la variable Accès par: NomVariable.NomChamps exemple main() { point p1; p1.x = 8; p1.y = 9; p1.z = 10; cout <<p1.x<<p1.y<<p1.z<<'\n'; }

Introduction au Langage C,C++ Les structures de données accès aux données Deux cas de figure On dispose de l'adresse de la variable (pointeur) Accès par: NomVariable->NomChamps exemple main() { point *pp1, p1; pp1 = &p1; pp1->x = 8; pp1->y = 9; pp1->z = 10; cout <<pp1->x<<pp1->y<<pp1->z<<'\n'; }

Introduction au Langage C,C++ Les fonctions définition Ensemble d'instructions pouvant être appelés de manière répétitive par un nom déclaration type arg_ret nom_f( type arg1,type arg2, …type argn) { ensemble instructions } arg_ret est l'argument renvoyé par la fonction (instruction return nom_f est le nom de la fonction arg1 …argn sont les arguments envoyés à la fonction

Introduction au Langage C,C++ Les fonctions règles d'utilisation L'ordre, le type et le nombre des arguments doivent être respectés lors de l'appel de la fonction L'appel d'une fonction doit être située après sa déclaration ou celle de son prototype (voir exemple transp suivant) Si la fonction ne renvoie rien alors préciser le type void

Introduction au Langage C,C++ Prototype de la fonction min Les fonctions exemple: int min(int a, int b); void main() { cout <<min(a,b)<<'\'; } int min(int a, int b) if (a <b) return a; else return b; Programme principal Fonction min et son bloc d'instructions

Introduction au Langage C,C++ Les fonctions Les paramètres se passent par valeur Recopie en mémoire des paramètres dans des paramètres temporaires. Toute modification des paramètres dans la fonction est sans effet sur les paramètres originelles Quand on quitte la fonction, les paramètres temporaires sont effacés de la mémoire Recopie dans le sous programme appelant de la valeur du paramètre retourné par la fonction return.

Introduction au Langage C,C++ Les fonctions exemple: void permutter(int a, int b) { int temp; temp = a; a = b; b= temp; } void main() int x=3;int y =5; permutter(x,y); cout << "x="<<x<<" y="<<y<<'\n'; Aucune action sur les paramètres x et y x=3 y=5

Introduction au Langage C,C++ Les fonctions Passage d'arguments par adresse On passe non pas la valeur de la variable mais son adresse Il est donc possible par les pointeurs de modifier le contenu de l'adresse, donc la variable originelle Permet de modifier plusieurs arguments à la fois dans une fonction Permet de passer des tableaux en argument

Introduction au Langage C,C++ Les fonctions exemple: void permutter(int *pa, int *pb) { int temp; temp = *pa; *pa = *pb; *pb= temp; } void main() int x=3;int y =5; permutter(&x,&y); cout << "x="<<x<<" y="<<y<<'\n'; Action sur les paramètres x et y x=5 y=3

Introduction au Langage C,C++ Les Fichiers Les fichiers sont soit: binaires (un float sera stocké comme il est codé en mémoire , d'où gain de place mais incompatibilité entre logiciels) formaté ASCII (un float binaire sera transformé en décimal puis on écrira le caractère correspondant à chaque chiffre). Pour accéder aux données, on le fait soit: De manière séquentielle (on accède au contenu dans l'ordre du stockage) Par un accès direct (on peut directement accéder à n'importe quel endroit du fichier)

Introduction au Langage C,C++ Les Fichiers Les Fonctions Prototypées dans stdio.h, io.h, fcntl.h Ouverture d’un fichier handle = open(char *nomfic, int mode); nomfic: pointeur vers une chaîne de caractère contenant le chemin, le nom du fichier et l’extension du fichier mode: variable entière dont chaque bit possède une signification particulière. Utilisation de constantes prédéfinies O_RDONLY Ouverture pour lecture seule O_WRONLY Ouverture pour écriture seule O_RDWR Ouverture pour lecture et écriture O_APPEND Ajout des données à la fin du fichier O_CREAT Crée le fichier s’il n’existe pas O_BINARY Ouvre le fichier en mode Binaire (Stockage de l’info comme elle est stockée dans la mémoire de l’ordinateur) O_TEXT Ouvre le fichier en mode Texte. (On mémorise le code ASCII de chaque nombre ou caractère)

Introduction au Langage C,C++ Les Fichiers Les Fonctions Écriture dans un fichier int write(int handle, void *bloc, unsigned taille); Handle: numéro entier caractérisant le fichier (renvoyé lors de l’ouverture du fichier avec la fonction open) Bloc: pointeur vers le bloc de données Taille: taille en octet de ce bloc Lecture dans un fichier (idem écriture avec fonction read) int read(int handle, void *bloc, unsigned taille); Fermeture d’un fichier int close(int handle)

Introduction au Langage C,C++ Les Fichiers Exemple // inclusion des entêtes des fonctions #include <io.h> #include <fcntl.h> #include <string.h> main() { int handle; // numéro caractérisant le fichier char string[40]; // tableau de caractères int length; // Variable mémorisant la taille du bloc de données int x=40; // entier x valant 40 int y=102; // entier y valant 102 // ouverture du fichier Monfichier.txt avec création s'il n'existe pas // Fichier ouvert en écriture en mode texte handle = open("c:\\Monfichi.txt",O_CREAT |O_RDWR |O_APPEND); // Fonction (idem à printf) qui écrit un message formaté dans un tableau // de caractères (printf l'écrit vers l'écran) length=sprintf(string,"valeur de x=%d valeur de y=%d \n",x,y); // Ecriture de la chaîne de caractères dans le fichier write(handle,string,length); // Fermeture du fichier close(handle); }