Rappels de C ECP – Option SA Henri Fallon. Objectifs Théorie + pratique Compréhension générale du langage Repartant « du début » Pour ceux qui savent.

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

La boucle for : init7.c et init71.c
Les fonctions A quoi ça sert ?
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.
Introduction au langage C
Rappels de C ECP – Option SA Henri Fallon. Objectifs Théorie + pratique Compréhension générale du langage Repartant « du début » Pour ceux qui savent.
Le langage C++ Les boucles.
Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.
la programmation en langage C
C.
Programmer en JAVA par Tama
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
5. Les structures répétitives
1)Boucle for 2)Boucle while
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
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
CYCLE 3 : Alternatives Faire des choix dans un programme en C 1- AIGUILLAGE SIMPLE sur CONDITION : if-else 2-AIGUILLAGE MULTIPLE sur CONDITIONS if-else.
Points importants de la semaine Les boucles. Les types arithmétiques. Les opérateurs.
Master 1 SIGLIS java Lecteur Stéphane Tallard Chapitre 4 – Structures de contrôle.
Introduction à la programmation (Java)
Algorithme et programmation
Bases de la programmation en C++ 1 Les enchaînementsdinstruction Séquentiels. Exécutions dinstructions les unes à la suite des autres. Instructions séparées.
Développement logiciel pour microcontrôleurs PIC
Principes de programmation (suite)
Instruction sélective switch-case Instruction répétitive do-while For
Miguel Garzon CrUise Lab - SITE. Introduction Data Types and Sizes Constants Logic Operators Type conversions Example.
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.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Introduction au Langage C
ECP – Option SA Henri Fallon
Plan troisième cours Instruction sélective Instruction répétitive
Programmation Orienté Objet en C++ Ricard julien.
LANGAGE C LP A2I IUT St DIE
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.
Formation C++. Hello World ! #include /* Commentaire sur plusieurs lignes */ int main() { //Affiche hello world std::cout
L’essentiel du langage C
LANGAGE PASCAL Introduction rapide….
2.1 - Historique Chapitre 2 : Introduction au langage C++
et quelques rappels sur certains éléments du langage C
3 Les instructions. Cours 32 Plan du cours 3 Instruction Bloc Portée L’alternative Affectations =, +=, *=… Comment comparer –Comparer des réels –Comparer.
JavaScript.
SIF-1053 Architecture des ordinateurs
ALGORITHMIQUE ET PROGRAMMATION C
Présentation rapide d’
Argc et argv Utilisation des paramètres de la ligne de commande.
Un survol du language C.
Les tests.
La programmation.
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
UMR 7619 Sisyphe Avril 2012 Alexandre Pryet Le langage une introduction pragmatique Cacul itératif.
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
B.Shishedjiev - Affectation1 Expressions et affectation Comment produire des nouvelles valeurs.
Introduction au langage JAVA
Introduction au langage C : Structures de contrôle 1 ère année Génie Informatique Dr Daouda Traoré Université de Ségou
Langage de programmation
PRO-1027 Programmation Scientifique en C
22 Concepts de base du langage Java. 2-2 Objectifs A la fin de ce cours, vous serez capables de : Identifier les éléments essentiels de Java Identifier.
Introduction au langage C
C++ BY AURÉLIEN MODULO MARION. PLAN DES TROIS PRÉSENTATIONS C++ avancé C++ orienté objet Bases de C++
Java Réalisé par: Mouna POKORA. PLAN: Définition : Historique: Caractéristiques: un langage orienté objet: un langage interprété : un langage portable:
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Types et opérations fondamentales ● Tests ● Boucles ● Pointeurs, références.
Algorithmique et programmation de modèles numériques
Programmation en C++ C++ de base
Transcription de la présentation:

Rappels de C ECP – Option SA Henri Fallon

Objectifs Théorie + pratique Compréhension générale du langage Repartant « du début » Pour ceux qui savent déjà coder : retournez dormir :-)

Syntaxe basique Les instructions se terminent par un ' ; ' Les instructions peuvent se regroupper avec des accollades : {.... } Les commentaires entre /* et */

Premier programme Source Exécutable Compilation Compréhensible par un humain (un peu entrainé) Non utilisable par la machine Incompréhensible par un humain (ou alors vraiment très entrainé !) Utilisable par la machine

Premier programme (2) int main(void) { fputs(hello world\n); } implémentation

Premier programme (3) int main(void) { puts("hello world\n"); } compilation implémentation $ gcc -out hello hello.c

Premier programme (4) int main(void) { puts("hello world\n"); } compilation implémentation $ gcc -out hello hello.c exécution $./hello hello world $

Les variables Se déclarent avant les instructions Ont un type Entier (int, short,...) éventuellement unsigned Caractère (char) décimaux (float, double,...) Se convertissent int i; float f; char c;

Utilisation de variables int main( void ) { int i; i = 0; if( i == 0 ) { puts("i est nul\n"); } i=5; if( i == 0 ) { puts("i est encore nul\n"); } $./programme2 i est nul $

Instructions conditionnelles utilisation de « if » pas de point-virgule après if ou else bonne habitude : toujours grouper les instructions avec ' {' et '}' comparaisons (a==b) (a!=b) (a b) (a)... if( condition ) { instructions; } else { autres_instructions; }

Boucles utilisation de « for » exemple for( initialisation; condition; iteration ) { instructions; } int main( void ) { int i; for( i=0; i<3; i++ ) { printf("i vaut %d\n", i); } $./programme_boucle_for i vaut 0 i vaut 1 i vaut 2 $

Boucles (2) while( condition ) { instructions; } int main( void ) { int i = 3; while( i < 6 ) { puts("proj\n"); i++; } utilisation de « while » exemple $./programme_boucle_while proj $

Boucles (3) do { instructions; } while( condition ) ; autre utilisation de « while » différence : le bloc « instructions » est toujours exécuté au moins une fois A l'utilisation d'une boucle, toujours penser aux conditions d'entrée et de sortie.

Boucles : pratique Pour un nombre de fois determiné : for( i=0; i<nb; i++ ) { instructions; } Tant qu'une condition est vraie while( condition ) { instructions; } Au moins une fois, et tant qu'une condition est vraie do { instructions } while ( condition ); En utilisant while, il faut que condition ait une chance de changer !!

Tests et conditions sur les nombres : == != = implicitement : '!=0' opérateurs logiques (!cond) (cond1)&&(cond2) (cond1)||(cond2) importance des parenthèses if( i ) { puts("i non nul"); } int i=12; if( ((i%2)&&(i 10) ) {... } /*vrai*/ if( (i%2) && ((i 10)) ) {... } /*faux*/

Trucs et astuces dans le doute, mettre des parenthèses et des accollades les opérateurs unitaires ++ et - - pratiques à utiliser de préférence seuls i++ if( i ) {... } /* plus lisible que */ if( ++i ) {... }

Les fonctions Don't repeat yourself : factoriser le code gain de place et de lisibilité code maintenable travail distribuable dans une équipe int main(void) { int i=0; i++; i++; i++; } printf("i vaut %d, et i-1 vaut %d",i,i-1); int main(void) { int i=0; affiche( i ); i++; affiche( i ); i++; affiche( i ); i++; } void affiche( int v ) { printf("v vaut %d et v-1 vaut %d\n",v, v- 1); }

Les fonctions ont un type de retour, ou void ne s'utilisent qu'après avoir été implémentées avoir été déclarées.... et notre premier programme ? $ gcc -Wall -out hello hello.c hello.c: In function `main´: hello.c: warning: implicit declaration of function `puts´ hello.c: warning: control reaches end of non-void function

Retour à hello.c directive #include valeur de retour #include int main(void) { fputs(hello world\n); return 0; }

Pointeurs c'est une variable qui contient une adresse memoire il est typé : « pointeur vers un int », « pointeur vers un unsigned short »,... « double sens » de la déclaration a est un « int * » *a est un « int » int *a;

Pointeurs accès à l'adresse d'une variable : par l'opérateur & accès à la variable depuis le pointeur : par l'opérateur * #include int main( void ) { int i = 0; int *p; p = &i; printf( "i=%d p=%p\n",i,p); i=5; printf( "i=%d p=%p\n",i,p); *p = 12; printf( "i=%d p=%p\n",i,p); }

Tableaux tableaux et pointeurs sont très proches déclaration: p pointe vers le premier entier du tableau ( p+1 ) pointe vers le second entier du tableau accès direct : p[0], p[1],... plus rapide que (*(p+1))... affectation à la déclaration : int p[12]; int p[3] = { 2, 12, 42 };

Tableaux #include int main() { int foo [ ] = { 2, 12, 42 } ; int *p = foo; /* p vaut foo, donc &(foo[0]) */ printf("%d %d %d\n", foo[0], foo[1], foo[2]); printf("%d %d %d\n", p[0], p[1], p[2]); printf("%d %d %d\n", *foo, *(foo+1), *(foo+2)); } $./programme_tableau $

Chaines de caractères En C, pas de type spécifique On utilise des tableaux de char Qui se termine par un caractère nul : '\0' char string1[] = { 'c','o','m','p','l','i','q','u','é',0}; char string2[] = "plus simple"; /* et même, pour les char* uniquement */ char * string3 = "à la déclaration"; dernier caractère p[5] = 0 p[5] = '\0'

« Hands on » ! Et n'oubliez pas ! Identez Faites des fonctions Privilégiez la lisibilité Et en pratique Lisez les messages d'erreur !

Avec Visual Studio Si la question est posée, choisissez la configuration de touches « C++ » Créez un nouveau projet « WIN32 Console » Désactivé loption « entêtes précompilés » Dans votre projet, renommez le.cpp en.c Changez le protoype de la fonction _tmain pour quelle devienne int main(void ) Vous êtes prêts

Exercice 1 déclarer un tableau et le remplir d'entiers de 1 à 30 à l'aide d'une boucle afficher son contenu afficher son contenu en ordre inverse printf("la case %d vaut %d\n", indice, valeur );

Exercice 2 Lire une ligne tapée au clavier L'afficher Recommencer jusqu'à ce qu'on tape une ligne vide (juste ) Utilisez pour cela fgets( ) avec comme paramêtre stdin

Exercice 3 Même chose en affichant la ligne à l'envers.

Exercice 4 Lire plusieurs lignes au clavier jusqu'à l'entrée d'une ligne vide Les afficher dans l'ordre inverse de saisie char tableau[dimension1][dimension2]: Crée un tableau de dimension1 lignes de chacune dimension2 caractères

Pour les rapides Trouvez les nombre de fois quune fonction peut sappeller elle même Prouvez quen écrivant trop loin dans un tableau on peut modifier la valeur dautres variables Ecrivez une fonction qui permet dinverser deux variables (hint : utilisez des pointeurs !)

Les tours de Hanoï SourceDestinationTemporaire

Déplacement élémentaire 1 SourceDestinationTemporaire

Déplacement élémentaire 2 SourceDestinationTemporaire

Déplacement élémentaire 3 SourceDestinationTemporaire

Déplacement élémentaire SourceDestinationTemporaire

Déplacement Déplacer 3 ? Déplacer les 2 au dessus vers temporaire Déplacer le 3 vers destination Déplacer les 2 au dessus vers destination