Le langage C. Les bases Jean-Pierre Fournier,

Documents pareils
Introduction au langage C

Introduction à l algorithmique et à la programmation M1102 CM n 3


1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

UE C avancé cours 1: introduction et révisions

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cours d Algorithmique et de Langage C v 3.0

Programmation C++ (débutant)/instructions for, while et do...while

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Claude Delannoy. 3 e édition C++

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Programmation C. J.-F. Lalande. 15 novembre 2012

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Algorithmique et Programmation, IMA

Plan du cours. Historique du langage Nouveautés de Java 7

INF111. Initiation à la programmation impérative en C amini/cours/l1/inf111/ Massih-Reza Amini

Programmation en Java IUT GEII (MC-II1) 1

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

UE Programmation Impérative Licence 2ème Année

as Architecture des Systèmes d Information

Introduction à l héritage en C++

Département Automatisation et Informatisation Année Programmation en C++ Institut des Sciences et Techniques de l Ingénieur d Angers

Programmer en JAVA. par Tama

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

SUPPORT DE COURS. Langage C

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Programmation en langage C

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Bases de programmation. Cours 5. Structurer les données

Programmation en C/C++

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Rappels Entrées -Sorties

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

COMPARAISONDESLANGAGESC, C++, JAVA ET

Programme Compte bancaire (code)

TP : Gestion d une image au format PGM

Le langage C. Introduction, guide de reference

Informatique Générale

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Le prototype de la fonction main()

Notions fondamentales du langage C# Version 1.0

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

1.6- Génération de nombres aléatoires

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

Représentation d un entier en base b

Algorithmique, Structures de données et langage C

INFO-F-105 Language de programmation I Séance VI

Chap III : Les tableaux

PROJET ALGORITHMIQUE ET PROGRAMMATION II

V- Manipulations de nombres en binaire

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

Programmation système I Les entrées/sorties

Cours de C/C++ par la pratique. Hugues Talbot

Introduction à C++ et à wxwidgets

Le langage C++ (partie I)

Chapitre 10. Les interfaces Comparable et Comparator 1

Programmation stochastique

Java Licence Professionnelle CISII,

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Analyse de sécurité de logiciels système par typage statique

Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon

Cours d initiation à la programmation en C++ Johann Cuenin

Introduction au pricing d option en finance

Les structures de données. Rajae El Ouazzani

Conventions d écriture et outils de mise au point

IUT ANNECY Département Mesures Physiques Cours d informatique Initiation au langage C

OS Réseaux et Programmation Système - C5

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Codage d information. Codage d information : -Définition-

Cours de C. Petits secrets du C & programmation avancée. Sébastien Paumier

Une introduction à Java

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Anis ASSÈS Mejdi BLAGHGI Mohamed Hédi ElHajjej Mohamed Salah Karouia

INF 321 : mémento de la syntaxe de Java

Généralités sur le Langage Java et éléments syntaxiques.

Logiciel de Base. I. Représentation des nombres

Le Langage C Licence Professionnelle Qualité Logiciel Pr. Mouad BEN MAMOUN ben_mamoun@fsr.ac.ma Année universitaire 2011/2012

ALGORITHMIQUE ET PROGRAMMATION En C

Méthodes de programmation systèmes UE n NSY103. Notes de cours. Nombre d'heures : 55h (~ cours de 3 heures)

Initiation. àl algorithmique et à la programmation. en C

Quelques éléments de compilation en C et makefiles

et Programmation Objet

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel)

Chapitre 10 Arithmétique réelle

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Programmation système en C/C++

Langage Éric Guérin 5 octobre 2010

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Informatique I. Sciences et Technologies du Vivant (Semestre 1)

Architecture de l ordinateur

Transcription:

Le langage C Les bases Jean-Pierre Fournier, http://www.iut-orsay.fr/~fournier jpf@fiifo.u-psud.fr

Un peu d histoire B (Bell labs) (1970) [Ken Thompson] NB (new B) (B + types) (1971) [Dennis Ritchie] C (1972) C++ (1983-1985)[Bjarne Stroustrup] Java The green team (1991) 13 personnes sont chargées par Sun d anticiper la prochaine évolution de la programmation WebRunner (le navigateur HotJava), un clone de Mosaic basé sur Java version 1.0a2 (march 1995) => version 1.5 Le langage C 2

Dans un programme C, on trouve : Des déclarations Pour réserver des zones en mémoire et leur attribuer un nom int x, y; réserve deux emplacements nommés x et y pour accueillir des données numériques entières. float a, b, c; réserve trois emplacements a, b et c pour des données numériques réelles. Le langage C 3

Unités de mesure et déclarations 0 ou 1 : le bit (binary unit) 8 bits = 1 octet (byte) 1024 octets = 1kiloOctet (kb) ensuite Méga, Giga, Téra, Exa short => nombre entier sur 2 octets long => nombre entier sur 4 octets float => nombre réel sur 4 octets double => nombre réel sur 8 octets Le langage C 4

Déclarations (suite) un type particulier : char pour déclarer une zone numérique de 1 octet destinée à recevoir un petit nombre ou un code de caractère 8 bits codages de 0000 0000 à 1111 1111 le bit de gauche est le bit de signe (0 pour les nombres positifs, 1 pour les négatifs) 0000 0000 à 0111 1111 (0 à 127) 1000 0000 à 1111 1111 (-128 à -1) Le langage C 5

Les codages de caractères sur 1 octet ebcdic, ascii, ascii à bit de parité sur 2 octets unicode (alphabets internationaux, normes ISO ) en C : a renvoie le code de la lettre a, Z renvoie le code de la lettre Z majuscule char lettre = b ; pour réserver une zone mémoire de 1 octet initialisée avec le code de la lettre b. abcdef pour réserver une zone mémoire de 7 octets contenant les codes des lettres et un zéro. a b c d e f 0 Le langage C 6

Avec ou sans signe? unsigned char les 256 valeurs possibles sont considérées de 0 à 255, pas de -128 à 127 0000 0000 => 0 1111 1111 => +255 unsigned short, unsigned long, unsigned int Le langage C 7

Un premier programme void main(){ int x, y; char lettre; float a, b; ne renvoie aucun résultat dans le fichier exemple1.c compilé et lié par : gcc exemple1.c o ex1.exe message d avertissement : exemple1.c: In function `main': exemple1.c:1: warning: return type of `main' is not `int' essayé par ex1 résultat : Le langage C 8

Affectation et calculs int main(){ int x, y; char lettre; float a, b; Compilation : Aucun message! x = y = 4; lettre = 'p'; a = 5.6; b = a*2; x = y+6; b = x; b = (float) x; lettre = lettre * 2; l affectation inscrit la valeur de droite dans l objet de gauche. Le langage C 9

Présenter des résultats pour afficher, 3 outils (C++) cout, cerr les flots de sortie << l opérateur qui envoie vers le flot endl pour la fin de ligne cout << x << endl; affiche la valeur de x et passe à la ligne Le langage C 10

Exemple avec résultats #include <iostream> using namespace std; Pour avoir le droit d employer cout, << et endl int main(){ int x, y; char lettre; float a, b; x = y = 4; lettre = 'p'; a = 5.6; b = a*2; x = y+6; b = x; b = (float) x; Résultats affichés : x = 10 y = 4, lettre = Ó b = 10 lettre = lettre * 2; cout << "x = " << x << endl; cout << "y = " << y << ", lettre = " << lettre << endl << "b = " << b << endl; Le langage C 11

Fournir des données avec les outils de C++ => nom de fichier.c => compilation avec gpp deux éléments pour les données le flot cin, l opérateur >> cin >> x; pour placer la valeur qui vient du flot d entrée dans la variable x problème : risque d incohérence des données Le langage C 12

Exemple #include <iostream> using namespace std; int main(){ int x, y; cin >> x >> y; cout << "x = " << x << endl << "y = " << y << endl; Essai 1 : 12 56.4 x = 12 y = 56 Essai 2 : 4.5 6.42 x = 4 y = 0 Essai 3 : 4 z x = 4 y = 0 Le langage C 13

Les opérations élémentaires et combinées + - * / % : modulo 26 % 5 => 1 &! ^ (opérateurs binaires) et, ou, non, ou exclusif && (opérateurs logiques) et, ou <<, >> décalage binaire +=, -=, *=, /=, &=, =,!=, ^=, <<=, >>= x += 3 «ajouter 3 à x» au lieu de x = x+3 ++, -- x++ «ajouter 1 à x» au lieu de x = x + 1 les comparaisons : <, <=, >, >=, ==,!= attention : ne pas confondre == (compare) et = (affecte) Le langage C 14

Les tests if () et (()?:) #include <iostream> using namespace std; int main(){ int x, y; cin >> x >> y; cout << "x = " << x << endl << "y = " << y << endl; if (x < y) cout << "la première valeur est plus petite" << endl; else cout << "la première valeur est plus grande" << endl; cout << "la seconde valeur est donc plus " << ((x < y)?"grande":"petite") << endl; Résultats d exécution : 10 12 x = 10 y = 12 la premiþre valeur est plus petite la seconde valeur est donc plus grande Le langage C 15

Les itérations while(), for(), do while() #include <iostream> using namespace std; int main(){ int courante, lue; cin >> courante; cout << courante; cin >> lue; cout << ", " << lue; while (lue >= courante && lue!= -1){ courante = lue; cin >> lue; cout << ", " << lue; if (lue == -1) cout << endl << "les valeurs données étaient croissantes..."; else cout << endl << "la suite de valeurs données n'est pas croissante..."; cout << endl; Résultats : 2 4 6 8 10-1 2, 4, 6, 8, 10, -1 les valeurs données étaient croissantes... 2 4 6 5 2, 4, 6, 5 la suite de valeurs données n'est pas croissante... Le langage C 16

Quelques risques #include <iostream> using namespace std; int main(){ // une itération pourrait être éternelle! short x = 0; while (x < 32768) { cout << x << " " x++; Le langage C 17

Résultats (!) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 32762 32763 32764 32765 32766 32767-32768 -32767-32766 -32765-32764 C ne se soucie pas de la qualité des résultats, c est le programmeur qui doit le faire! Le langage C 18

Nouvelle version #include <iostream> using namespace std; int main(){ /* une itération pourrait être éternelle! */ short x = 0; const long limite = 32768; while (x < limite) { cout << x << " "; if (x+1>=limite) { cout << "depassement de capacite"; exit(1); /* ou abort(); */ x++; 32764 32765 32766 32767 depassement de capacité Le langage C 19

Version plus moderne (C++) #include <iostream> using namespace std; int main(){ // une itération pourrait être éternelle! short x = 0; const long limite = 32768; while (x < limite) { cout << x << " "; if (x+1>=limite) throw "depassement de capacite"; x++; garantit le traitement de la situation anormale sans arrêter obligatoirement le programme. Le langage C 20