Cours de programmation en langage C (Norme ANSI)

Slides:



Advertisements
Présentations similaires
A RECUPERER EN ENTRANT Le polycopié de Caml Partie 1
Advertisements

Rappels C.
Introduction au langage C
Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.
L’essentiel du langage C
Argc et argv Utilisation des paramètres de la ligne de commande.
Le débogage Semaine 12 Version A15. Plan de leçon - Débogage  Commentaire javadoc  Définition  Fonctionnement  Point d’arrêt  Exécution  Contrôler.
C++ Les fonctions. Présentation Utilité : Dès qu'un programme dépasse la centaine de lignes de code, il est pratique de pouvoir le décomposer en plusieurs.
Tableaux et Pointeurs Chaînes de Caractères Programmation Impérative II.
Chapitre 4 la représentation des nombres. Chapitre 4 : La représentation des nombres 1 - Introduction 1.1 – Notion de mot 2 - La représentation des entiers.
CINI – Li115 1 Semaine 4 Révisions ● Questions de cours ● Types des expressions ● Déclaration de variables ● Instruction conditionnelle et boucles ● Structure.
CINI – Li115 1 Introduction à la programmation impérative en langage C Module Li115 Semestre 2011fev Chargés de cours : Nicolas Sabouret Pierre Fouilhoux.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Fonctions ● Namespace ● Tests ● Boucles ● Pointeurs, références.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Types et opérations fondamentales ● Tests ● Boucles ● Pointeurs, références.
Exercice : Soient les fonctions définies sur N ( ensemble des entiers naturels donc positifs ) par : f(x) = - 2x + 6 ; g(x) = x + 1 ; k(x) = la plus grande.
Tableaux en C Mardi 2/05.
Le Langage JavaScript pour le web
Synthèse TP 2 Codeblock 1 Les objectifs de ce tp sont :
JAVA.
Ajouter le code dans une page html
Les tableaux différencier les variables simples des variables indicées (ordonnées et numérotées) un identificateur unique désigne un ensemble, une collection.
Environnement de développement des BD
Les Instructions Itératives (Les Boucles)
Introduction au Langage Pascal
Langage C Structure d'un programme Types Lire Ecrire Tester
Représentation des nombres réels
Chapitre 1 nombres, chaînes de caractères, booléens, et VARIABLES
Eléments d’Informatique Cours11 – Allocation dynamique, listes chaînées Catherine Recanati.
Allocation dynamique de mémoire
Pointeurs et langage C.
Qu'est-ce que POSIX? Une librairie en langage C
Opérateurs Toute donnée informatique est stockée en mémoire sous la forme d'une combinaison de bits (mot machine). Les opérateurs bits permettent de modifier.
Algorithmique et programmation de modèles numériques
Semaine #1 INF130 par Frédérick Henri.
Javadoc et débogueur Semaine 03 Version A17.
AO (Architecture des ordinateurs)
7 – COMMUNICATION INTER PROCESSUS SEGMENTS DE MÉMOIRE PARTAGEE
Principes de programmation (suite)
Algorithmique Langage C
Semaine 11 Les pointeurs (suite)
Les fonctions.
L’Instruction de Test Alternatif
Matrices, déclaration en CSharp
SIF-1053 Architecture de ordinateurs
Arguments de la ligne de commande
Un Algorithme , c'est Quoi ?
Algorithmique & Langage C
Excel (et toute l’informatique) :
Codage Indenter le code Limiter la portée des variables Traiter les erreurs en premier Utiliser le switch au delà de 3 tests en cascades Ne jamais utiliser.
L E C ORPS D ’ UN A LGORITHME / P ROGRAMME – L A PARTIE I NSTRUCTION Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie.
L’I NSTRUCTION DE T EST A LTERNATIF Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira, Bejaia Année.
L ES I NSTRUCTIONS I TÉRATIVES (L ES B OUCLES ) Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira,
Algorithmique & Langage C IUT GEII S1 Notes de cours (deuxième partie)
Coding party Écrire un programme qui élève un nombre au carré Écrire un programme qui teste si un nombre est pair Écrire un programme qui calcule la factorielle.
Le Langage C Initiation à la programmation
Programmation en C++ C++ de base
Entrées/Sorties - Variables - Calculs - Alternative
Calcul Scientifique Initiation à SCILB
Eléments de base du langage C
Les classes et les objets
Exercice : Soient les fonctions définies sur N ( ensemble des entiers naturels donc positifs ) par : f(x) = - 2x + 6 ; g(x) = x + 1 ; k(x) = la plus.
Les exceptions Le mécanisme des exceptions est destiné à permettre aux fonctions profondes d'une bibliothèque de notifier la survenue d'une erreur aux.
Définition : 2 Les structures de contrôle conditionnelles permettent à un programme de modifier son traitement en fonction d’une condition.
Opérateurs et fonctions arithmétiques Opérateurs de relation Opérateurs logiques Cours 02.
Principes de programmation (suite)
Le langage C# : Partie 1.
Chapitre 2 : Représentation de l’information dans la machine Introduction Représentation des nombres négatifs –Signe / valeur absolue –Complément à 1 –Complément.
Analyse et programmation langage ADA
Python Nicolas THIBAULT
Eléments de base du langage C
Transcription de la présentation:

Cours de programmation en langage C (Norme ANSI) Soutien C et Java Anthony REY – 4A AL Cours N°1

Plan du cours I) Introduction II) Les bases du langage III) Exercices Historique Mais c’est quoi un langage de programmation ? Processus classique de compilation II) Les bases du langage Le programme minimal utile Compiler et exécuter un programme Les variables et les types Les conditions et introduction à la logique booléenne La portée des variables III) Exercices

I) Introduction Historique : Crée en 1972 : Procédural et Impératif Dennis Ritchie Bell Labs Procédural et Impératif 2ème langage le plus utilisé au monde (Index TIOBE 2015) Java est 1er, le C l’était en 2014 Les deux langages se trouvent souvent au coude à coude TIOBE est un Indicateur un peu mauvais toutefois (Analyse des recherches web)

I) Introduction Bas niveau Plusieurs normes : Utilisé en embarqué Programmation système UNIX Programmation réseaux Plusieurs normes : C84 C ANSI (C90) C99 C11

I) Introduction Mais c’est quoi un langage de programmation ? Communication Homme > Machine Transformation code source > code machine Interprété (Python, PHP…) Compilé (C / C++ / Haskell…) Hybride (Java / C#…) Attention : Le HTML n’est pas un langage de programmation !! C’est un langage d’organisation de l’information basé sur SGML

I) Introduction Processus classique de compilation : Compilation Conversion of C source to assembler and assembly into object code Link edition It joins the different object code needed by the final executable

I) Introduction Aller plus loin : Processus classique de compilation : Compilation conditionnelle (make) Assembleur et assemblage Dynamic et static linking

II) Les bases du C Le programme minimal utile : #include <stdio.h> int main(int argc , char** argv) { printf(« Hello, world ! »): return 0; }

II) Les bases du C Directives de préprocesseur 2) Fonction main Inclusion des définitions de fonctions voulues pour le programme Commencent par # Ici, on veut les entrées-sorties standards (stdio.h) 2) Fonction main Point d’entrée d’un programme C A recopier telle qu’elle ( à quelques exceptions près pour ses paramètres) La totalité du programme tiens entre les accolades qui sont le corps de la fonction En C tout les blocs de codes sont délimités par des accolades On expliquera en détail le reste lorsque l’on verra les fonctions.

II) Les bases du C Une ligne contenant une instruction fini par un ; Les blocs sont délimités par des accolades Les messages d’erreurs à l’exécution sont cryptiques Les erreurs de linker sont cryptiques

Compiler et exécuter un programme Compilation de base : GCC : GNU C Compiler gcc [-ansi] main.c [-o nom_du_binaire] [-l librairies] Exécuter un programme : ./nom_du_binaire Attention : sudo chmod +x Un programme doit être marqué comme exécutable sur linux (C’est le cas par défaut avec les sorties de GCC)

Les variables et les types Zone mémoire qui contient une et une seule valeur Mémoire : Meuble de rangement Variable Tiroir On déclare une variable puis on initialise celle-ci avec une valeur Attention : Une variable est forcement déclarée (sinon il n’y a pas de variable…), mais pas forcement initialisée Lire une variable non initialisée résulte en une valeur complètement imprévisible !

Les variables et les types Exemple simplifié : Déclaration suivie d’une affectation : ma_variable = 10; Déclaration simple : ma_variable; « = »  est appelé opérateur d’affectation

Les variables et les types Leur taille en mémoire dépends de l’implémentation sous-jacente… Les types principaux : Entiers Int Short (short int) Long (long int) Flottants (chiffres à virgule) Float (simple précision) Double (double précision) Caractères Char

Les variables et les types Signe : Signed Unsigned Aller plus loin ? https://fr.wikibooks.org/wiki/Programmation_C/Types_de_bas e

Les variables et les types Exemple complet : Déclaration typée suivie d’une affectation : int ma_variable = 10; Déclaration simple : unsigned short ma_variable; Déclaration suivie d’une affectation : float ma_variable; float ma_variable = 10.0;

Les conditions et introduction à la logique booléenne Branchement logique On embranche si l’évaluation de la condition est VRAI Vrai / Faux (Logique booléenne) Pas de variables booléennes en C ANSI : Les entiers 1 et 0 sont utilisés 1 = TRUE 0 = FALSE On a les principales conditions suivantes en C : If / else / else if

Les conditions et introduction à la logique booléenne Opérateurs : == test d’égalité Renvoie 1 si égal, 0 sinon ! (non) Négation Inverse la valeur booléenne évaluée != test d’inégalité Renvoie 1 si NON égal, 0 sinon

Les conditions et introduction à la logique booléenne Petit aparté : Les // dénotent un commentaire (uni-ligne) Un commentaire n’est pas pris en compte par le compilateur, son but est de documenter le code pour le / les développeur(s) On peut créer des commentaires sur plusieurs lignes avec /* blah blah */

Les conditions et introduction à la logique booléenne Exemple : If ( 1 == 1 ) // évalué à 1 lors de l’éxecution du programme { //1 == 1 est toujours VRAI //Donc on rentre dans la condition } If ( 1 != 1 ) // évalué à 0 lors de l’éxecution du programme //1 != 1 est toujours FAUX //Donc on ne rentre pas

Les conditions et introduction à la logique booléenne On peut aussi encapsuler la condition pour lui appliquer l’opérateur de négation : If ( !(1 == 1) ) // 1 == 1 vaut 1 qui est transformé en 0 par ! { //C’est donc équivalent à 1 != 1 //On ne rentre pas dans la condition }

Les conditions et introduction à la logique booléenne Utilisation de else et de else if : /* On peut omettre les accolades si il n’y a qu’un seul bloc dans le bloc de code de la condition. Mais c’est toutefois une mauvaise pratique. */ if( 1 == 0 ) // n’y rentrera jamais (on compare des constantes) else if( 1 == 2 ) else if( 1 == 3 ) else // Cas par défaut si rien n’a matché plus haut

Les conditions et introduction à la logique booléenne Combiner des expressions booléennes vous avez dit ? Les opérateur ET et OU : && (et) || (ou) Ex Je veux > (un chat à poils longs) && (qui n’est pas roux) Quels sont les cas qui sont répondent à ce problème ?

Les conditions et introduction à la logique booléenne 1

Les conditions et introduction à la logique booléenne OU : OU 1

Les conditions et introduction à la logique booléenne Exemple : If ( 1 == 1 && 2 == 2 ) //On rentre car : // 2 == 2 est evalué à 1 // 1 == 1 est évalué à 1 // (1 && 1) > 1 //Idéalement on isolera les composantes de la condition pour plus de lisibilité // (1 == 1) && (2 == 2)

Les conditions et introduction à la logique booléenne Soit un chaton nommé « Fluffy » : Je veux > (un chat à poils longs) && (qui n’est pas roux) (cat_p == poils_longs) && (cat_c != roux) (1) && (1) 1 TRUE Cet adorable chaton correspond aux critères de notre condition booléenne

La portée des variables Une variable n’est accessible que dans le bloc de déclaration et ses sous blocs : int main (…) { int i = 0; If( i == 0) int j = 2; printf(« %d », i); //OK printf(« %d », j); //OK } printf(« %d », i); // OK printf(« %d », j); //plante à la compil, détruite lors de la sortie du if return 0;

III) Exercices Afficher le message suivant : Salut ! [saut de ligne] Ca va ? Créer une variable entière, lui affecter 10 et l’afficher Créer un flottant, lui affecter 10.0 et l’afficher Créer une variable entière lui affecter 10, si cette variable vaut 10, afficher : « Ma variable vaut 10 » Reprendre ce programme et affecter 11 à votre variable, gérez l’autre cas (« ma variable ne vaut pas 10 »)