CINI – Li115 1 Semaine 2 Bibliothèque graphique, opérateurs et instructions de base ● Bibliothèque graphique ● Instruction composée ● Instructions conditionnelles.

Slides:



Advertisements
Présentations similaires
CINI – Li115 1 Semaine 4 Révisions ● Questions de cours ● Types des expressions ● Déclaration de variables ● Instruction conditionnelle et boucles ● Structure.
Advertisements

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.
CINI – Li115 1 Semaine 3 Boucles (suite), tirages aléatoires, bibliothèque graphique ● Imbrication d'instructions if et for ● Boucles for imbriquées ●
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 Semaine 5 Les tableaux ● Qu'est-ce qu'un tableau ? ● Déclarer et initialiser un tableau ● Fixer la taille d'un tableau ● Opérations classiques.
CINI – Li115 1 Semaine 10 Les pointeurs ● Notion d'adresse ● Déclaration et utilisation de pointeurs ● "Types pointeur" et initialisation des pointeurs.
11 Alternative : syntaxe CSharp la structure conditionnelle : –si condition alors instruction1 sinon instruction2 fin si –En C# : if (condition) { instruction1.
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.
CINI – Li115 1 Semaine 11 Les pointeurs (suite) ● Tableaux et pointeurs ● Questions sur les pointeurs.
Comment utiliser le débogueur de Visual Studio /8/2015 INF145 1 Créé par Julien Galarneau Allaire, révisé par Eric Thé S.E.G.
1 Programmation en C++ IO en C++/SL ● Standard Library ● Types, objets pour IO ● L'entrée de clavier ● Sortie à l'écran ● Fichiers.
UE2 - M22 Licence acoustique
Semaine 8 Retour sur les tableaux : fonctions et récursivité
JAVA.
Les Instructions Itératives (Les Boucles)
I- ANALYSE DU BESOIN / Plan
Coloration de graphe, backtracking, branch and bound
Un Algorithme , c'est Quoi ?
LES TABLEAUX EN JAVA.
Session 1 6 mars 2017 Plateforme ICONICS Justine Guégan
Initiation aux bases de données et à la programmation événementielle
Algorithme et programmation
Algorithmique et programmation de modèles numériques
Algorithmique AU El harchaoui noureddine
Algorithmique demander jeu du pendu.
Ajouter le code dans une page html
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Les opérations sur les nombres
L’Instruction de Test Alternatif
Javadoc et débogueur Semaine 03 Version A16.
Les Instructions – Organigramme
Bases de programmation en Python
Principes de programmation (suite)
Langages de programmation TP3
Algorithmique & Langage C
Programmation Orientée Objet I. Introduction
Python for beginners Qu'est ce que Python
Cyber-Sphinx Séance 2.
  EXCEL FORMATION d'introduction.
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II
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)
Concepts de base de la programmation
Notion De Gestion De Bases De Données
Création Et Modification De La Structure De La Base De Données
Programmation en C++ C++ de base
PROGRAMMATION ET ENSEIGNEMENT
Exercice PHP DEUST TMIC
Entrées/Sorties - Variables - Calculs - Alternative
Réseaux de neurones appliqués à la reconnaissance de caractères
Formation sur les bases de données relationnelles.
Exercice : le jeu. Vous devez concevoir l’algorithme permettant de jouer avec votre calculatrice : elle détermine au hasard un nombre caché entier entre.
Apprendre le clavier Révision : les touches Mode d’emploi
Semaine #2 INF130 par Frédérick Henri.
Filière Génie Civil – 2018 Langage C Tableaux – Exercices de révision
Chapitre 4: Les graphiques
Chapitre 3: Les scriptes
Logiciel de présentation
PRO1026 Programmation et enseignement
H. Wertz -- Exécution Symbolique
Programmation Scratch
Opérateurs et fonctions arithmétiques Opérateurs de relation Opérateurs logiques Cours 02.
PROGRAMMATION ET ENSEIGNEMENT
Quelle est la valeur de S après exécution des instructions suivantes :
Chapter 11: Récursivité Java Software Solutions Second Edition
Exploitation de vos données
STS Web Services libres Gérer les services libres
Python Nicolas THIBAULT
Type Tableau Partie 1 : Vecteurs
Transcription de la présentation:

CINI – Li115 1 Semaine 2 Bibliothèque graphique, opérateurs et instructions de base ● Bibliothèque graphique ● Instruction composée ● Instructions conditionnelles ● Boucle for ● Directive #define

CINI – Li115 2 Les fonctions graphiques ● Fenêtre graphique ● Coordonnées d'un point ● Problème de la mise en attente ● Primitives de dessin ● Point ● Ligne ● Texte

CINI – Li115 3 Fenêtre et coordonnées ● Une fenêtre graphique est composée d'un ensemble de points dont les coordonnées sont des entiers positifs ou nuls ; ● Une fenêtre de largeur L et de hauteur H représente l'ensemble des points de coordonnées entières x et y telles que : – 0 ≤ x ≤ (L - 1) – 0 ≤ y ≤ (H - 1) ● Le point de coordonnées (0, 0) est situé en haut à gauche de la fenêtre.

CINI – Li115 4 Notion de pixel ● Un pixel est un élément de la fenêtre défini par : – - sa coordonnée x – - sa coordonnée y – - sa couleur : dans les fonctions de la bibliothèque graphique, c'est une chaîne de caractères en anglais : ''red'', ''white'', ''green'', ''black'',... (0, 0) x=15 y=10 ''red' '

CINI – Li115 5 Création d'une fenêtre ● void CINI_open_window(int width, int height, string title); ● → Crée une fenêtre de largeur width, de hauteur height et de nom title ● void CINI_open_fullscreen(); ● → Crée un espace graphique à la taille de l'écran Attention : ● Votre programme doit appeler l'une de ces deux fonctions avant toute opération d'affichage graphique ● Vous ne pouvez avoir qu'une fenêtre d'ouverte à la fois ● → En ouvrir une deuxième détruit la première...

CINI – Li115 6 La mise en attente ● Lorsque la dernière instruction (graphique ou non) a été exécutée, le programme se termine et ferme la fenêtre graphique. ● La durée totale d'exécution est inférieure à 1s : l'utilisateur n'a pas le temps de voir son dessin s'afficher ! ● Il faut ajouter une instruction qui bloque l'exécution jusqu'à ce qu'un événement se produise : ● - clic souris ● - enfoncement d'une touche ●

CINI – Li115 7 Les fonctions de mise en attente ● void CINI_loop(void) ; ● Met le programme en pause jusqu'à la fermeture de la fenêtre : – - par un clic dans le coin en haut à gauche (si on n'est pas – en plein écran) – - par la touche d'échappement (esc) ● int CINI_loop_until_keyup(void) ; ● Met le programme en pause jusqu'au relâchement d'une touche ● int CINI_loop_until_keydown(void) ; ● Met le programme en pause jusqu'à l'enfoncement d'une touche

CINI – Li115 8 Un programme graphique minimal #include int main() { /* Creation de la fenetre */ ● CINI_open_window(300, 400, "fenetre"); ● /* Pause jusqu'à fermeture par l'utilisateur */ ● CINI_loop(); return 0; }

CINI – Li115 9 Manipuler des pixels ● void CINI_draw_pixel(int x, int y, string color); ● Affecte la couleur color au point de coordonnées (x, y) dans la fenêtre ● void CINI_fill_window(string color); ● Affecte la couleur color à tous les points de la fenêtre ● bool CINI_check_pixel_color(int x, int y, string color); ● Retourne true si le pixel de coordonnées (x, y) dans la fenêtre est de couleur color, retourne false sinon

CINI – Li Tracer des lignes ● void CINI_draw_line(int ax, int ay, int bx, int by, string color); ● Trace une ligne de couleur color entre le point A de coordonnées (ax, ay) et le point B de coordonnées (bx, by) (0, 0) ax ayay A B byby bx

CINI – Li Insérer du texte dans l'image ● void CINI_draw_string(int x, int y, string color, string str); ● Affiche la chaîne de caractères str à la position (x, y) dans la fenêtre graphique. ● Le texte est affiché en blanc. (0, 0) x y Hello world ! H Note : le caractère peut occuper moins de 15x25 pixels. 'M' est plus large et plus haut que 'e'.

CINI – Li Un programme plus complet #include int main() { CINI_open_window(500, 200, "fenetre"); CINI_draw_string(200, 50, "white", "Hello world !"); CINI_draw_line(180, 40, 360, 40, "lime green"); CINI_draw_line(180, 85, 360, 85, "fuchsia"); CINI_draw_line(180, 40, 180, 85, "yellow"); CINI_draw_line(360, 40, 360, 85, "aqua"); CINI_loop(); return 0; }

CINI – Li115 13

CINI – Li Instructions ● Une instruction peut être : ● Une expression, elle se termine alors par un point virgule. – Par exemple : une déclaration de variable, une affectation, un appel de fonction. ● Une structure de contrôle : boucle ou alternative. – Par exemple : ● if(...){ ●... ● } ● else{ ●... ● } ● Un bloc d'instructions. ● for(...){ ●... ● } ● while(...){ ●... ● }

CINI – Li Instruction composée (ou bloc d'instructions) ● Regroupe plusieurs instructions entre accolades ● { ● instruction_1; ● instruction_2; ● … ● instruction_n; ● } ● Doit contenir au moins une instruction (pour Li115)

CINI – Li Instruction conditionnelle ● Exécution séquentielle des instructions ● → soumettre l'exécution d'un bloc d'instructions à une condition ● Exemple: – Demander à l'utilisateur son numéro d'étudiant – Si ce numéro est plus grand que – → calculer son année d'inscription – → afficher l'année d'inscription – Demander à l'utilisateur son age –... –

CINI – Li Instruction conditionnelle simple : syntaxe Permet de conditionner l'exécution d'une suite d'instructions if (expression_booléenne) instruction; if (expression_booléenne) { instruction_1; … instruction_n; } Les instructions du bloc ne sont exécutées que si l'expression booléenne est vraie

CINI – Li Test de division par 0 CINI_print_string("apres if"); CINI_newline(); return 0; } #include int main(){ CINI_print_string("saisie du denominateur : "); CINI_print_string("saisie du numerateur : "); num = CINI_read_int(); /* Saisie d'un entier num et d'un entier den. Si den est non nul */ /* affiche le quotient et le reste de la division entiere de den */ /* par num */ if (den != 0) { quotient = num / den; } int num,den,quotient; CINI_print_string("quotient de la division entiere : "); CINI_print_int(quotient); CINI_newline(); CINI_print_string("reste de la division entiere : "); CINI_print_int(num % den); CINI_newline(); den = CINI_read_int();

CINI – Li saisie du numerateur : 8 saisie du denominateur : 4 quotient de la division entiere : 2 reste de la division entiere : 0 apres if saisie du numerateur : 5 saisie du denominateur : 4 resultat de la division : 1 reste de la division entiere : 1 apres if saisie du numerateur : 8 saisie du denominateur : 0 apres if

CINI – Li Instruction conditionnelle avec alternative : syntaxe Permet de définir des instructions à exécuter si l'expression booléenne est fausse if (expression_booléenne) { instruction_1; … instruction_n; } else { instruction_alt_1; … instruction_alt_m; } Chaque bloc peut contenir une ou plusieurs instructions

CINI – Li Traitement de la division par 0 #include int main(){ /* déclarations des variables num, den et quotient*/... /* initialisation de num et den */... if (den != 0) { quotient = num / den; /* affichage des résultats */... } else { CINI_print_string("erreur : division par 0"); CINI_newline(); } CINI_print_string("apres if"); CINI_newline(); return 0; }

CINI – Li Pas de changement lors d'une division par un entier ≠ 0 saisie du numerateur : 0 saisie du denominateur : 3 resultat de la division : 0 reste de la division entiere : 3 apres if saisie du numerateur : 8 saisie du denominateur : 0 erreur : division par 0 apres if

CINI – Li Instruction conditionnelle : règles de bonne conduite Toujours utiliser des instructions composées (même pour une seule instruction) pas de ralentissement du programme permet facilement l'ajout d'instructions

CINI – Li Boucle ● Exécution séquentielle des instructions ● Avec des conditions ● → pouvoir répéter un bloc d'instructions ● Exemple: – Afficher tous les nombres entre 1 et 10 – CINI_print_int(1); CINI_print_int(2); … – VS – i=0; – Répéter jusqu'à 10: – → i=i+1; – → CINI_print_int(i);

CINI – Li Boucle for : syntaxe Permet de répéter plusieurs fois un bloc d'instructions associé à une variable de boucle for (init ; condition_cont ; modification) { instruction_for_1; … instruction_for_n; } init initialise la variable de boucle (qui a été déclarée avant) condition_cont (test de la valeur de la variable de boucle) condition d'entrée (de continuation) de la boucle détermine si la valeur de fin de boucle est atteinte ou non modification modifie la valeur de la variable de boucle attribue une valeur pour le prochain tour de boucle intervient dans le bloc après : instruction_for_n;

CINI – Li Affichage des 4 premiers entiers naturels non nuls int i; CINI_print_string("Valeur de i : "); CINI_print_int(i); CINI_newline(); Valeur de i : 1 Valeur de i : 2 Valeur de i : 3 Valeur de i : 4 Boucle finie for ( ; ; ) { } CINI_print_string("Boucle finie"); CINI_newline(); i=1i < 5i=i+1

CINI – Li Boucle for : méthodologie ● Déclaration de la variable de boucle ● i = la valeur à afficher ● Écriture du traitement à répéter en utilisant la variable de boucle (instructions qui vont être dans la boucle) ● Affichage de la valeur de i ● Identification de la valeur initiale de la variable de boucle (init) ● i commence à 1 ● Identification de la valeur finale de la variable de boucle (condition_cont) ● i s'arrête à 4 ● Calcul de la valeur suivante de la variable de boucle (modification) ● i augmente de 1

CINI – Li Affichage des lettres entre 'a' et 'd' for ( ; ; ) { } Valeur de c : a Valeur de c : b Valeur de c : c Valeur de c : d Boucle finie CINI_print_string("Boucle finie"); CINI_newline(); char c; CINI_print_string("Valeur de c : "); CINI_print_char(c); CINI_newline(); c='a'c <= 'd'c=c+1

CINI – Li Notation Incrémentation et décrémentation d'une variable ● var = var+1 peut s'écrire var++ ● var = var-1 peut s'écrire var int i; for (i=1; i < 5; i++) { CINI_print_string("Valeur de i : "); CINI_print_int(i); CINI_newline(); } CINI_print_string("Boucle finie"); CINI_newline();

CINI – Li Affichage des multiples de 3 inférieurs à 10 int i; Multiples de Boucle finie CINI_print_string("Boucle finie"); CINI_newline(); CINI_print_int(i); CINI_newline(); for ( ; ; ) { } i=3i < 10i=i+3 CINI_print_string("Multiples de 3"); CINI_newline();

CINI – Li Boucle for : règles de bonne conduite for (init ; condition_cont ; modification) { instruction_for_1; … instruction_for_n; } Toujours utiliser une instruction composée init : initialise une variable déjà déclarée condition_cont : teste la valeur de la variable de init modification : modifie la valeur de la variable de init instruction_for_i : ne doit pas modifier la valeur de la variable de init pas d'instruction d'interruption de la boucle

CINI – Li Directive #define Nommer des valeurs (sans déclarer de variables) Abstraction : utiliser le nom plutôt que la valeur AVANTAGES ● Facilite la modification et la mise au point du programme ● réutilisation simple de la valeur ● modification de la valeur à un seul endroit ● Meilleur style de programmation #define NOM valeur Le préprocesseur (avant compilation) remplace toutes les apparitions de NOM par valeur Par tradition les noms seront en majuscules

CINI – Li Affichage des N premiers entiers naturels non nuls Même algorithme que l'on affiche les entiers de 1 à 4, de 1 à 10 ou … Ecriture d'un algorithme général, indépendant du nombre d'entiers à afficher

CINI – Li Directive #define : fichier source #include #define N 7 int main() { int i; for (i=1 ; i < N ; i++) { CINI_print_string("Valeur de i : "); CINI_print_int(i); CINI_newline(); } return 0; } Le fichier source

CINI – Li Préprocesseur (avant compilation) int main() { int i; for (i=1 ; i < 7 ; i++) { CINI_print_string("Valeur de i : "); CINI_print_int(i); CINI_newline(); } return 0; } Le fichier qui sera compilé

CINI – Li Exécution (après compilation) Valeur de i : 1 Valeur de i : 2 Valeur de i : 3 Valeur de i : 4 Valeur de i : 5 Valeur de i : 6 Pour afficher plus (ou moins) d'entiers il suffit de - changer la valeur associée à N - recompiler - exécuter le programme obtenu

CINI – Li Attention : valeur ≠ variable #include #define N 3 int main() { N = N-1; return 0; } int main() { 3 = 3-1; return 0; } Fichier qui sera compilé Fichier source error : invalid lvalue in assignment #define NOM val NOM n'est pas une variable, c'est une valeur (val ici)