SlideShare une entreprise Scribd logo

Les fondamentaux du langage C

objectif général : acquerir les fondamentaux d'un langage procédural objectifs opérationnels : Mémoriser des données à l’aide des variables Traiter des données à l’aide des opérateurs Communiquer avec le programme à travers le clavier et l’écran Contrôler le flux d’exécution des instructions Se servir des tableaux, des pointeurs et des structures Gérer la mémoire d’une manière dynamique Définir et utiliser des fonctions

1  sur  25
Langage C 
les fondamentaux 
M. DIENG Abdoulaye
Les objectifs du module 
• Mémoriser des données à l’aide des variables 
• Traiter des données à l’aide des opérateurs 
• Communiquer avec le programme à travers le clavier 
et l’écran 
• Contrôler le flux d’exécution des instructions 
• Se servir des tableaux, des pointeurs et des 
structures 
• Gérer la mémoire d’une manière dynamique 
• Définir et utiliser des fonctions
Sommaire 
1. Notion de variable 
2. Les types élémentaires 
3. Notion de constante 
4. Les opérateurs 
5. Entrée/sortie de données 
6. Les structures de contrôle 
7. Les Tableaux 
8. Les Pointeurs 
9. Les Fonctions 
10. Les Structures
Notion de variable 
• Une variable permet de désigner un emplacement mémoire et possède : 
 une valeur ou contenu « provisoire » ; 
 un type décrivant un ensemble de valeurs et un ensemble 
d'opérateurs sur ces valeurs ; 
 un identificateur ou nom permettant l’accès au contenu. 
• Déclaration de variables: 
Type identificateur1[,identificateur2, …];
Types de base 
entiers 
• Types entiers 
DDééffiinniittiioonn MMiinn MMaaxx OOcctteettss 
sshhoorrtt iinntt --3322776688 3322776677 22 
iinntt --22114477448833664488 22114477448833664477 44 
lloonngg iinntt --22114477448833664488 22114477448833664477 44 
uunnssiiggnneedd iinntt 00 44229944996677229955 44 
uunnssiiggnneedd lloonngg 00 44229944996677229955 44
Types de base 
caractères et réels 
• Type caractère 
• Désigné par char ou unsigned char, un caractère (lettre, chiffre ou 
symbole, visible ou non) est codé en mémoire sur 1 octet. 
• La valeur stockée est le code (un entier) du caractère dans le codage de 
la machine utilisée (en général le code ASCII). 
• Ces valeurs vont de -128 à 127 dans le cas des char et de 0 à 255 dans 
le cas des unsigned char. 
• Type réel 
DDééffiinniittiioonn MMaannttiissssee MMiinn >> 00 MMaaxx OOcctteettss 
ffllooaatt 66 11..117755**ee--3388 33..44022**ee3388 44 
ddoouubbllee 1155 22..222255**ee--33088 11..779977**ee33088 88 
lloonngg ddoouubbllee 1199 33..336622**ee--44993322 11..118899**ee44993322 110

Recommandé

Cours structures des données (langage c)
Cours structures des données (langage c)Cours structures des données (langage c)
Cours structures des données (langage c)rezgui mohamed
 
Cours langage c
Cours langage cCours langage c
Cours langage ccoursuniv
 
Seance 3- Programmation en langage C
Seance 3- Programmation en langage C Seance 3- Programmation en langage C
Seance 3- Programmation en langage C Fahad Golra
 
Cours python
Cours pythonCours python
Cours pythonsalmazen
 
Cours de programmation en c
Cours de programmation en cCours de programmation en c
Cours de programmation en cbenouini rachid
 

Contenu connexe

Tendances

Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniShellmates
 
Java cours n° 2 - classe-objet-constructeur
Java   cours n° 2 - classe-objet-constructeurJava   cours n° 2 - classe-objet-constructeur
Java cours n° 2 - classe-objet-constructeurAbdelwahab Naji
 
Ch2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfCh2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfFadouaBouafifSamoud
 
Programmation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationProgrammation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationECAM Brussels Engineering School
 
Fiche1 ex-sous-programme
Fiche1 ex-sous-programmeFiche1 ex-sous-programme
Fiche1 ex-sous-programmeBaghdadi Wajih
 
Formation python
Formation pythonFormation python
Formation pythonj_lipaz
 
Chapitre 4 récursivité
Chapitre 4 récursivitéChapitre 4 récursivité
Chapitre 4 récursivitéSana Aroussi
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage PythonAziz Darouichi
 
Chapitre 3 tableaux et pointeurs en C
Chapitre 3 tableaux et pointeurs en CChapitre 3 tableaux et pointeurs en C
Chapitre 3 tableaux et pointeurs en CAbdelouahed Abdou
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Aziz Darouichi
 
Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)salah fenni
 
Chapitre 3 elements de base de java
Chapitre 3  elements de base de javaChapitre 3  elements de base de java
Chapitre 3 elements de base de javaAmir Souissi
 

Tendances (20)

Le langage C
Le langage CLe langage C
Le langage C
 
Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El Hassani
 
Java cours n° 2 - classe-objet-constructeur
Java   cours n° 2 - classe-objet-constructeurJava   cours n° 2 - classe-objet-constructeur
Java cours n° 2 - classe-objet-constructeur
 
Introduction à pl/sql
Introduction à pl/sqlIntroduction à pl/sql
Introduction à pl/sql
 
Ch2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfCh2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdf
 
Programmation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationProgrammation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulation
 
Fiche1 ex-sous-programme
Fiche1 ex-sous-programmeFiche1 ex-sous-programme
Fiche1 ex-sous-programme
 
02 correction-td smi-s3-algo2
02 correction-td smi-s3-algo202 correction-td smi-s3-algo2
02 correction-td smi-s3-algo2
 
Chapitre 01 - Notions de base
Chapitre 01 - Notions de baseChapitre 01 - Notions de base
Chapitre 01 - Notions de base
 
Formation python
Formation pythonFormation python
Formation python
 
Introduction à Python
Introduction à PythonIntroduction à Python
Introduction à Python
 
Chapitre 4 récursivité
Chapitre 4 récursivitéChapitre 4 récursivité
Chapitre 4 récursivité
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage Python
 
Chapitre 3 tableaux et pointeurs en C
Chapitre 3 tableaux et pointeurs en CChapitre 3 tableaux et pointeurs en C
Chapitre 3 tableaux et pointeurs en C
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références
 
01 correction-td smia-s2-info2
01 correction-td smia-s2-info201 correction-td smia-s2-info2
01 correction-td smia-s2-info2
 
Cours JavaScript
Cours JavaScriptCours JavaScript
Cours JavaScript
 
Chapitre 1 rappel
Chapitre 1   rappelChapitre 1   rappel
Chapitre 1 rappel
 
Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)
 
Chapitre 3 elements de base de java
Chapitre 3  elements de base de javaChapitre 3  elements de base de java
Chapitre 3 elements de base de java
 

En vedette

Sophia conf2014 press-review-janua
Sophia conf2014 press-review-januaSophia conf2014 press-review-janua
Sophia conf2014 press-review-januaPascal Flamand
 
Nakamura iteso ponencia_28_feb_2014
Nakamura iteso ponencia_28_feb_2014Nakamura iteso ponencia_28_feb_2014
Nakamura iteso ponencia_28_feb_2014Hatsuko Nakamura
 
Redes sociales y Herramientas Web en Medicina
Redes sociales y Herramientas Web en MedicinaRedes sociales y Herramientas Web en Medicina
Redes sociales y Herramientas Web en MedicinaRosa Taberner Ferrer
 
2 y 3 unidad de 4to
2 y 3 unidad de 4to2 y 3 unidad de 4to
2 y 3 unidad de 4toDomus
 
Question 3 evaluation by Isin Vedat
Question 3 evaluation by Isin VedatQuestion 3 evaluation by Isin Vedat
Question 3 evaluation by Isin VedatCoombeMedia
 
887f4575 9021-4a53-9ae5-596aefb2f61f
887f4575 9021-4a53-9ae5-596aefb2f61f887f4575 9021-4a53-9ae5-596aefb2f61f
887f4575 9021-4a53-9ae5-596aefb2f61fBadr Zine
 
Consultoría sobre elaboración de plan municipal de gestión del riesgo
Consultoría sobre elaboración de plan municipal de gestión del riesgoConsultoría sobre elaboración de plan municipal de gestión del riesgo
Consultoría sobre elaboración de plan municipal de gestión del riesgoDaniel Mena Castro
 
Journée Nemo - présentation Caroline Pionnier à Fougeres
Journée Nemo - présentation Caroline Pionnier à FougeresJournée Nemo - présentation Caroline Pionnier à Fougeres
Journée Nemo - présentation Caroline Pionnier à FougeresIlle & Vilaine Tourisme
 
Netscope présidentielle 2012 eva joly n’a peut être pas dit son dernier mot ...
Netscope présidentielle 2012  eva joly n’a peut être pas dit son dernier mot ...Netscope présidentielle 2012  eva joly n’a peut être pas dit son dernier mot ...
Netscope présidentielle 2012 eva joly n’a peut être pas dit son dernier mot ...Institut Netscope
 
Netscope présidentielle 2012 sur twitter, françois bayrou au centre des centres
Netscope présidentielle 2012  sur twitter, françois bayrou au centre des centresNetscope présidentielle 2012  sur twitter, françois bayrou au centre des centres
Netscope présidentielle 2012 sur twitter, françois bayrou au centre des centresInstitut Netscope
 
Antibes les journées du patrimoine
Antibes les journées du patrimoineAntibes les journées du patrimoine
Antibes les journées du patrimoineLECREURER
 
Financement des associations et baisse des subventions forum 2013 ol.bs
Financement des associations et baisse des subventions forum 2013 ol.bsFinancement des associations et baisse des subventions forum 2013 ol.bs
Financement des associations et baisse des subventions forum 2013 ol.bsMarie Bluzet Proniewski
 
Etude bibliométrique des productions scientifiques de l'INTA, Argentine, 2007...
Etude bibliométrique des productions scientifiques de l'INTA, Argentine, 2007...Etude bibliométrique des productions scientifiques de l'INTA, Argentine, 2007...
Etude bibliométrique des productions scientifiques de l'INTA, Argentine, 2007...Agropolis International
 
Identification sur Internet - Login social - Thierry Brisset
Identification sur Internet - Login social - Thierry BrissetIdentification sur Internet - Login social - Thierry Brisset
Identification sur Internet - Login social - Thierry BrissetISACA Chapitre de Québec
 

En vedette (20)

Le langage C
Le langage CLe langage C
Le langage C
 
Les xarxes socials
Les xarxes socialsLes xarxes socials
Les xarxes socials
 
Sophia conf2014 press-review-janua
Sophia conf2014 press-review-januaSophia conf2014 press-review-janua
Sophia conf2014 press-review-janua
 
Nakamura iteso ponencia_28_feb_2014
Nakamura iteso ponencia_28_feb_2014Nakamura iteso ponencia_28_feb_2014
Nakamura iteso ponencia_28_feb_2014
 
Redes sociales y Herramientas Web en Medicina
Redes sociales y Herramientas Web en MedicinaRedes sociales y Herramientas Web en Medicina
Redes sociales y Herramientas Web en Medicina
 
2 y 3 unidad de 4to
2 y 3 unidad de 4to2 y 3 unidad de 4to
2 y 3 unidad de 4to
 
Question 3 evaluation by Isin Vedat
Question 3 evaluation by Isin VedatQuestion 3 evaluation by Isin Vedat
Question 3 evaluation by Isin Vedat
 
887f4575 9021-4a53-9ae5-596aefb2f61f
887f4575 9021-4a53-9ae5-596aefb2f61f887f4575 9021-4a53-9ae5-596aefb2f61f
887f4575 9021-4a53-9ae5-596aefb2f61f
 
Consultoría sobre elaboración de plan municipal de gestión del riesgo
Consultoría sobre elaboración de plan municipal de gestión del riesgoConsultoría sobre elaboración de plan municipal de gestión del riesgo
Consultoría sobre elaboración de plan municipal de gestión del riesgo
 
Así trabajamos
Así trabajamosAsí trabajamos
Así trabajamos
 
Journée Nemo - présentation Caroline Pionnier à Fougeres
Journée Nemo - présentation Caroline Pionnier à FougeresJournée Nemo - présentation Caroline Pionnier à Fougeres
Journée Nemo - présentation Caroline Pionnier à Fougeres
 
Netscope présidentielle 2012 eva joly n’a peut être pas dit son dernier mot ...
Netscope présidentielle 2012  eva joly n’a peut être pas dit son dernier mot ...Netscope présidentielle 2012  eva joly n’a peut être pas dit son dernier mot ...
Netscope présidentielle 2012 eva joly n’a peut être pas dit son dernier mot ...
 
Cine presentacion
Cine presentacionCine presentacion
Cine presentacion
 
Netscope présidentielle 2012 sur twitter, françois bayrou au centre des centres
Netscope présidentielle 2012  sur twitter, françois bayrou au centre des centresNetscope présidentielle 2012  sur twitter, françois bayrou au centre des centres
Netscope présidentielle 2012 sur twitter, françois bayrou au centre des centres
 
Antibes les journées du patrimoine
Antibes les journées du patrimoineAntibes les journées du patrimoine
Antibes les journées du patrimoine
 
Loppsi 2 synthèse
Loppsi 2 synthèseLoppsi 2 synthèse
Loppsi 2 synthèse
 
Financement des associations et baisse des subventions forum 2013 ol.bs
Financement des associations et baisse des subventions forum 2013 ol.bsFinancement des associations et baisse des subventions forum 2013 ol.bs
Financement des associations et baisse des subventions forum 2013 ol.bs
 
Etude bibliométrique des productions scientifiques de l'INTA, Argentine, 2007...
Etude bibliométrique des productions scientifiques de l'INTA, Argentine, 2007...Etude bibliométrique des productions scientifiques de l'INTA, Argentine, 2007...
Etude bibliométrique des productions scientifiques de l'INTA, Argentine, 2007...
 
Administracion de redes
Administracion de redesAdministracion de redes
Administracion de redes
 
Identification sur Internet - Login social - Thierry Brisset
Identification sur Internet - Login social - Thierry BrissetIdentification sur Internet - Login social - Thierry Brisset
Identification sur Internet - Login social - Thierry Brisset
 

Similaire à Les fondamentaux du langage C

Eléments du langage Java.pdf
Eléments du langage  Java.pdfEléments du langage  Java.pdf
Eléments du langage Java.pdfAabidiHafid
 
Chapitre 2-Concepts de base de l'algorithme-2024.pdf
Chapitre 2-Concepts de base de l'algorithme-2024.pdfChapitre 2-Concepts de base de l'algorithme-2024.pdf
Chapitre 2-Concepts de base de l'algorithme-2024.pdfAdjimbawNDIAYE
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmiqueAbdoulaye Dieng
 
Java1_BasesLangage.pdf
Java1_BasesLangage.pdfJava1_BasesLangage.pdf
Java1_BasesLangage.pdfLarbaSAWADOGO2
 
Java1_BasesLangage.pdf
Java1_BasesLangage.pdfJava1_BasesLangage.pdf
Java1_BasesLangage.pdfLarbaSAWADOGO2
 
Chap 1 Initiation.pptx
Chap 1 Initiation.pptxChap 1 Initiation.pptx
Chap 1 Initiation.pptxolfaharrabi2
 
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCSiratiSoufiane
 
cpp1 : Quelques elements de base du C++
cpp1 : Quelques elements de base du C++cpp1 : Quelques elements de base du C++
cpp1 : Quelques elements de base du C++Abdoulaye Dieng
 
L’algorithme 1.pptx
L’algorithme 1.pptxL’algorithme 1.pptx
L’algorithme 1.pptxOkanimegamers
 
cours fortran.pptx
cours fortran.pptxcours fortran.pptx
cours fortran.pptxMED B
 
intro-csharp developement master 2 IF APP
intro-csharp developement master 2 IF APPintro-csharp developement master 2 IF APP
intro-csharp developement master 2 IF APPfrwebhelp
 
Les bases de la programmation en JAVA
Les bases de la programmation  en JAVA   Les bases de la programmation  en JAVA
Les bases de la programmation en JAVA Asmaa BENGUEDDACH
 
Introduction au langage python notion de base
Introduction au langage python notion de baseIntroduction au langage python notion de base
Introduction au langage python notion de basemohamedAitomar1
 
Introduction au langage python (Notion de base)
Introduction au langage python (Notion de base)Introduction au langage python (Notion de base)
Introduction au langage python (Notion de base)mohamedAitomar1
 

Similaire à Les fondamentaux du langage C (20)

Eléments du langage Java.pdf
Eléments du langage  Java.pdfEléments du langage  Java.pdf
Eléments du langage Java.pdf
 
Chapitre 2-Concepts de base de l'algorithme-2024.pdf
Chapitre 2-Concepts de base de l'algorithme-2024.pdfChapitre 2-Concepts de base de l'algorithme-2024.pdf
Chapitre 2-Concepts de base de l'algorithme-2024.pdf
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmique
 
Java1_BasesLangage.pdf
Java1_BasesLangage.pdfJava1_BasesLangage.pdf
Java1_BasesLangage.pdf
 
Java1_BasesLangage.pdf
Java1_BasesLangage.pdfJava1_BasesLangage.pdf
Java1_BasesLangage.pdf
 
langage C++
langage C++langage C++
langage C++
 
Chap 1 Initiation.pptx
Chap 1 Initiation.pptxChap 1 Initiation.pptx
Chap 1 Initiation.pptx
 
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
 
cpp1 : Quelques elements de base du C++
cpp1 : Quelques elements de base du C++cpp1 : Quelques elements de base du C++
cpp1 : Quelques elements de base du C++
 
Cours tp2
Cours tp2Cours tp2
Cours tp2
 
C++ 11/14
C++ 11/14C++ 11/14
C++ 11/14
 
memento_java_3c.pptx
memento_java_3c.pptxmemento_java_3c.pptx
memento_java_3c.pptx
 
Programmation en C
Programmation en CProgrammation en C
Programmation en C
 
L’algorithme 1.pptx
L’algorithme 1.pptxL’algorithme 1.pptx
L’algorithme 1.pptx
 
cours fortran.pptx
cours fortran.pptxcours fortran.pptx
cours fortran.pptx
 
Cours_Java.pdf
Cours_Java.pdfCours_Java.pdf
Cours_Java.pdf
 
intro-csharp developement master 2 IF APP
intro-csharp developement master 2 IF APPintro-csharp developement master 2 IF APP
intro-csharp developement master 2 IF APP
 
Les bases de la programmation en JAVA
Les bases de la programmation  en JAVA   Les bases de la programmation  en JAVA
Les bases de la programmation en JAVA
 
Introduction au langage python notion de base
Introduction au langage python notion de baseIntroduction au langage python notion de base
Introduction au langage python notion de base
 
Introduction au langage python (Notion de base)
Introduction au langage python (Notion de base)Introduction au langage python (Notion de base)
Introduction au langage python (Notion de base)
 

Plus de Abdoulaye Dieng

Fondamentaux du Référencement naturel
Fondamentaux du Référencement naturelFondamentaux du Référencement naturel
Fondamentaux du Référencement naturelAbdoulaye Dieng
 
Panorama des Technologies mobiles
Panorama des Technologies mobilesPanorama des Technologies mobiles
Panorama des Technologies mobilesAbdoulaye Dieng
 
Prise en main de WordPress
Prise en main de WordPressPrise en main de WordPress
Prise en main de WordPressAbdoulaye Dieng
 
Fondamentaux d’une API REST
Fondamentaux d’une API RESTFondamentaux d’une API REST
Fondamentaux d’une API RESTAbdoulaye Dieng
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScriptAbdoulaye Dieng
 
Introduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonIntroduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonAbdoulaye Dieng
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JSAbdoulaye Dieng
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmiqueAbdoulaye Dieng
 
Requêtes HTTP synchrones et asynchrones
Requêtes HTTPsynchrones et asynchronesRequêtes HTTPsynchrones et asynchrones
Requêtes HTTP synchrones et asynchronesAbdoulaye Dieng
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScriptAbdoulaye Dieng
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmiqueAbdoulaye Dieng
 

Plus de Abdoulaye Dieng (20)

Introduction à React
Introduction à ReactIntroduction à React
Introduction à React
 
Fondamentaux du Référencement naturel
Fondamentaux du Référencement naturelFondamentaux du Référencement naturel
Fondamentaux du Référencement naturel
 
Introduction à Symfony
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
 
Panorama des Technologies mobiles
Panorama des Technologies mobilesPanorama des Technologies mobiles
Panorama des Technologies mobiles
 
Prise en main de WordPress
Prise en main de WordPressPrise en main de WordPress
Prise en main de WordPress
 
Initiation à Bootstrap
Initiation à BootstrapInitiation à Bootstrap
Initiation à Bootstrap
 
Introduction à Laravel
Introduction à LaravelIntroduction à Laravel
Introduction à Laravel
 
Fondamentaux d’une API REST
Fondamentaux d’une API RESTFondamentaux d’une API REST
Fondamentaux d’une API REST
 
Introduction à Angular
Introduction à AngularIntroduction à Angular
Introduction à Angular
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
 
Introduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonIntroduction à l’orienté objet en Python
Introduction à l’orienté objet en Python
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JS
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmique
 
Introduction à Symfony
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
 
Initiation à Bootstrap
Initiation à BootstrapInitiation à Bootstrap
Initiation à Bootstrap
 
Requêtes HTTP synchrones et asynchrones
Requêtes HTTPsynchrones et asynchronesRequêtes HTTPsynchrones et asynchrones
Requêtes HTTP synchrones et asynchrones
 
Introduction à jQuery
Introduction à jQueryIntroduction à jQuery
Introduction à jQuery
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmique
 
Introduction à HTML 5
Introduction à HTML 5Introduction à HTML 5
Introduction à HTML 5
 

Les fondamentaux du langage C

  • 1. Langage C les fondamentaux M. DIENG Abdoulaye
  • 2. Les objectifs du module • Mémoriser des données à l’aide des variables • Traiter des données à l’aide des opérateurs • Communiquer avec le programme à travers le clavier et l’écran • Contrôler le flux d’exécution des instructions • Se servir des tableaux, des pointeurs et des structures • Gérer la mémoire d’une manière dynamique • Définir et utiliser des fonctions
  • 3. Sommaire 1. Notion de variable 2. Les types élémentaires 3. Notion de constante 4. Les opérateurs 5. Entrée/sortie de données 6. Les structures de contrôle 7. Les Tableaux 8. Les Pointeurs 9. Les Fonctions 10. Les Structures
  • 4. Notion de variable • Une variable permet de désigner un emplacement mémoire et possède :  une valeur ou contenu « provisoire » ;  un type décrivant un ensemble de valeurs et un ensemble d'opérateurs sur ces valeurs ;  un identificateur ou nom permettant l’accès au contenu. • Déclaration de variables: Type identificateur1[,identificateur2, …];
  • 5. Types de base entiers • Types entiers DDééffiinniittiioonn MMiinn MMaaxx OOcctteettss sshhoorrtt iinntt --3322776688 3322776677 22 iinntt --22114477448833664488 22114477448833664477 44 lloonngg iinntt --22114477448833664488 22114477448833664477 44 uunnssiiggnneedd iinntt 00 44229944996677229955 44 uunnssiiggnneedd lloonngg 00 44229944996677229955 44
  • 6. Types de base caractères et réels • Type caractère • Désigné par char ou unsigned char, un caractère (lettre, chiffre ou symbole, visible ou non) est codé en mémoire sur 1 octet. • La valeur stockée est le code (un entier) du caractère dans le codage de la machine utilisée (en général le code ASCII). • Ces valeurs vont de -128 à 127 dans le cas des char et de 0 à 255 dans le cas des unsigned char. • Type réel DDééffiinniittiioonn MMaannttiissssee MMiinn >> 00 MMaaxx OOcctteettss ffllooaatt 66 11..117755**ee--3388 33..44022**ee3388 44 ddoouubbllee 1155 22..222255**ee--33088 11..779977**ee33088 88 lloonngg ddoouubbllee 1199 33..336622**ee--44993322 11..118899**ee44993322 110
  • 7. Notion de constante • Une constante est désignée par un identificateur et une valeur, qui sont fixés en début de programme • La valeur ne peut pas être modifiée • Syntaxes de déclaration : #define identificateur valeur_constante const type identificateur = valeur_constante; • Il est fortement recommandé d’écrire l’identificateur d’une constante en majuscule. • La 1ère forme définit une constante de préprocesseur qui permet d'associer une valeur à un mot • La 2nde forme déclare une constante qui occupe de l’espace mémoire. • Dans la première forme, le type est sous-entendu (si il y a un point, c'est un réel, sinon un entier ; si il y a des quotes, c'est un caractère).
  • 8. Les opérateurs • Opérateurs arithmétiques +, -, *, /, % (modulo), ++(incrément), --(décrément) • Opérateurs d’assignation = (affectation), += (ajouter à), *=, /=, -=, %= • Opérateurs de comparaison == (égalité), <, <=, >, >=, != (différent) • Opérateurs logiques && (et), || (ou), ! (non)
  • 9. Entrée/sortie de données • printf("format"[,listeValeurs]) affiche la liste de valeurs (variables ou expressions) dans le format choisi. La partie "format" est une chaîne de caractères qui peut contenir du texte (à afficher tel quel) et des spécificateurs de format (préfixés du symbole %). • scanf("%format1 [%format2 …]", adr1[, adr2, … ]) lecture au clavier d’une (ou de +sieurs) valeur(s), dans le(s) format(s) spécifié(s). • Principaux spécificateurs de format c (caractère), d ou i (entier), u (entier non signé), f ou e (rationnel en notation décimale ou scientifique), s (chaîne de caractères), hd (short int), p (adresse), %(afficher %). Les types longs sont : ld ou li et Le ou Lf .
  • 10. Structures de contrôle structure conditionnelle strict • Cette structure est utilisée si on veut exécuter un traitement (instruction simple ou composée) seulement si une condition est vraie et ne rien faire si la condition est fausse. • Sa syntaxe : if (condition) { traitement } • Que le traitement soit exécuté ou non, le programme continue normalement son exécution après le bloc {…}.
  • 11. Structures de contrôle structure conditionnelle alternative • Elle permet d'exécuter deux traitements différents en fonction de la valeur booléenne d’une condition. • Sa syntaxe : if (condition) {traitement_1} else {traitement_2} • Après l’exécution du traitement 1 ou bien du traitement 2, le programme continue normalement son exécution juste après le bloc.
  • 12. Structures de contrôle structure conditionnelle multiple • Elle permet d'exécuter plusieurs traitements différents en fonction de valeurs booléennes de plusieurs conditions. • Sa syntaxe : if (condition_1) {traitement_1} else if (condition_2) {traitement_2} … else //Si aucune des n-1 conditions n’est vraie {traitement_n}
  • 13. Structures de contrôle structure conditionnelle de choix • La structure Switch permet de choisir le traitement à effectuer en fonction de la valeur d'une variable ou d'une expression. • Sa syntaxe : switch (expression entière) { case valeur 1 : traitement 1; break; case valeur 2 : traitement 2; break; … [default : traitement par défaut ] } NB: break permet de sortir du bloc
  • 14. Structures de contrôle structure itérative « while » • La boucle while permet de répéter un traitement tant qu'une expression conditionnelle est vraie. • Sa syntaxe : while (condition) {traitement} • La condition est testée avant la première exécution du traitement. • Ce traitement peut ne jamais s’exécuter • Il est nécessaire d’initialiser la variable qui subit la condition pour le premier passage. • Il faut s’assurer que le traitement fait évoluer la variable qui subit la condition pour que la terminaison de la boucle soit assurée. • Lorsque la condition devient fausse le programme continue normalement son exécution après le bloc.
  • 15. Structures de contrôle structure itérative « do … while » • La boucle do … while permet de répéter un traitement tant qu'une expression conditionnelle est vraie. • Sa syntaxe do { traitement }while(condition); • Le traitement s’exécute au moins une fois. • L’initialisation de la variable qui subit la condition pourra se faire lors de la première exécution du traitement • Il faut s’assurer que le traitement fait évoluer la variable qui subit la condition pour que la terminaison de la boucle soit assurée. • Lorsque la condition devient fausse, la boucle se termine et le programme continue normalement son exécution après le bloc.
  • 16. Structures de contrôle structure itérative « for » • La boucle for permet de répéter un traitement un nombre connu de fois. • Elle aide aussi à garder le contrôle de la boucle à un seul endroit • Syntaxe : for (exp_1 ; condition; exp_2 ) { traitement } • exp_1 permet d’initialiser la variable qui subit la condition • exp_2 permet de modifier la variable qui subit la condition • Lorsque la condition devient fausse, le programme sort de la boucle et continue normalement son exécution. • Dans toute structure itérative, la commande continue permet de sauter l’itération courante pour passer à la l’itération suivante.
  • 17. Les tableaux • Un tableau permet de désigner sous un seul nom un regroupement de données de même type. • Chaque donnée est repérée par un indice (entier naturel) • Déclaration d’un tableau unidimensionnel : type_des_données nom_tab[dim]; • Notation d’une donnée ou variable indicée : nom_tab[indice]; • L’indice varie de 0 à dim – 1. • On peut initialiser un tableau au moment de sa déclaration • Exemples: char voyelles[6]={'a', 'e', 'i', 'o', 'u', 'y'}; données 'a' 'e' 'i' 'o' 'u' 'y' indices 0 1 2 3 4 5 Dans ce cas la donnée 'e' est notée par voyelles[1]
  • 18. Les pointeurs présentation • Un pointeur est une variable spéciale qui peut contenir l'adresse d'une autre variable. • Lorsque la variable pointée fait plus d'un seul octet, ce qui est évidemment très souvent le cas, c'est l'octet de début (le premier de la suite d'octets qui stockent la variable) qui est pointé. • Une variable pointeur occupe toujours sizeof(int) (4 octets en général) • Les principaux intérêts des pointeurs résident dans la possibilité : – d’allouer de la mémoire au moment de l’exécution, ce qui permet la gestion des tableaux de tailles variables ainsi que des structures de données récursives (listes et arbres); – de permettre le passage par adresse pour des paramètres de fonctions.
  • 19. Les pointeurs présentation (suite et fin) • L’opérateur & ('adresse de') permet d’affecter l'adresse d'une variable à un pointeur. • L'opérateur * ('contenu pointée par') permet d’accéder au contenu pointé par le pointeur. • Il faut toujours initialiser (à défaut à NULL ie « une zone mémoire vide ») un pointeur pour éviter qu’il pointe n’importe où. • Déclaration d’un pointeur: Type_pointé * NomPointeur • Exemple : <<-- iiddeennttiiffiiccaatteeuurrss int A; <<-- vvaalleeuurrss int *P=NULL; <<-- aaddrreesssseess A = 10; P = &A; // P pointe sur A *P = 20; // modification de la valeur de A à partir de P printf("la variable pointee contient %d", A)
  • 20. Les pointeurs ajout d’un entier naturel • En ajoutant un entier naturel à un pointeur, un décalage d’adresses se fait par rapport à la taille (sizeof) en octet de l'objet pointé. • On pourra ainsi accéder aux cases mémoires consécutives à celle qui est pointée. • Exemple : float * adr; adr + 1 ; /* représente l'adresse du réel qui suit l'adresse du réel contenue dans adr */ • On peut aussi – incrémenter : adr++; – ajouter : adr+= 12
  • 21. Les pointeurs gestion mémoire • La fonction malloc([nbr*] sizeof(type_pointé)) demande au système d'exploitation un bloc de mémoire et renvoie l'adresse du bloc alloué • La fonction free(pointeur) libère un bloc mémoire précédemment alloué via malloc() • Exemple : ( à tester) #include <stdlib.h> float * p_reel=NULL; p_ reel= (float *) malloc ( sizeof(float) ); if( p_ reel == NULL ) printf("Allocation impossible"); else { printf("Allocation de mémoire à l’adresse %pn", p_ reel); *p_ reel = 3.14; printf("remplissage avec la valeur %fn",*p_ reel); free(p_ reel); printf("libération de mémoire à l’adresse %pn", p_ reel); p_ reel = NULL; /* car free() ne le fait pas */ }
  • 22. Les fonctions présentation • Une fonction peut être vue comme un bloc d'instructions avec un nom • Les fonctions permettent de découper un programme pour le rendre plus lisible et plus facile à déboguer ainsi que de réutiliser du code qui revient souvent. • Une fonction (non principale) n’est exécutée que lorsqu’elle est appelée. • La communication entre fonction appelée et fonction appelante peut se faire par l'intermédiaire de variables locales à la fonction appelée qu'on nomme paramètres (ou arguments) formels. • Syntaxe de la définition d’une fonction : TypeRslt NomFonct ([TypeArg1 NomArg1 [, TypeArg2 NomArg2 , ...] ] ) { déclarations locales; instructions; [return rslt;] } • L’instruction return permet à une fonction de renvoyer une valeur • Une fonction de TypeRslt void ne retourne aucune valeur.
  • 23. Les fonctions passage de paramètre • Le passage de paramètre en C est toujours réalisé par valeur. • La valeur d’un argument effectif n’est modifiée par la fonction que s’il est passé par adresse à l’aide d’un pointeur comme paramètre formel associé • Un tableau est toujours passé par adresse : l’identificateur d’un tableau est un pointeur constant sur son 1er élément
  • 24. Les structures présentation • Une structure est un type qui permet de désigner sous un seul nom un regroupement de données de types différents ou non. • Ce type permet ainsi de structurer très proprement des informations qui vont ensemble • Définitions d’une structure: struct nomStructure{ typeDonnee1 nomDonnee1; typeDonnee2 nomDonnee2; }; ou typedef struct{ typeDonnee1 nomDonnee1; typeDonnee2 nomDonnee2; } nomStructure;
  • 25. Les structures utilisation • Déclaration d’une variable de type structure: struct nomStructure nomVariable; • Déclaration simplifiée de cette variable avec typedef nomStructure nomVariable; • Accès à un champ d’une variable de type structure: nomVariable.nomDonnee; • Accès à un membre d’une variable pointeur sur une structure : nomVariable->nomDonnee; • Structures et fonctions – On peut utiliser les structures comme valeur de retour ; – Par défaut, les structures sont passées par valeur

Notes de l'éditeur

  1. derttyyy
  2. derttyyy