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

Slides:



Advertisements
Présentations similaires
CINI – Li115 1 Semaine 2 Bibliothèque graphique, opérateurs et instructions de base ● Bibliothèque graphique ● Instruction composée ● Instructions conditionnelles.
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 Introduction à la programmation impérative en langage C Module Li115 Semestre 2011fev Chargés de cours : Nicolas Sabouret Pierre Fouilhoux.
CINI – Li115 1 Semaine 6 Les fonctions ● Pourquoi écrire des fonctions ? ● Définition de fonctions ● Fonction main ● Appels de fonctions ● Portée des variables.
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 Bonnes Pratiques ● Indentation ● Présentation ● Initialisation des variables ● Conditions ● Gestion d'erreurs ● Conventions.
UE2 - M22 Licence acoustique
Semaine 8 Retour sur les tableaux : fonctions et récursivité
Javascript 1° PARTIE : LES BASES
JAVA.
Les Instructions Itératives (Les Boucles)
Introduction au Langage Pascal
Cours de programmation en langage C (Norme ANSI)
Un Algorithme , c'est Quoi ?
LES TABLEAUX EN JAVA.
Session 1 6 mars 2017 Plateforme ICONICS Justine Guégan
Détection des erreurs.
Algorithme et programmation
Algorithmique et programmation de modèles numériques
Semaine #1 INF130 par Frédérick Henri.
Algorithmique AU El harchaoui noureddine
Lois fondamentales de l'algèbre de Boole
Algorithmique demander jeu du pendu.
Ajouter le code dans une page html
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Semaine 11 Les pointeurs (suite)
L’Instruction de Test Alternatif
JAVA et POO : Notion d'héritage
SIF-1053 Architecture de ordinateurs
Javadoc et débogueur Semaine 03 Version A16.
Les Instructions – Organigramme
Tableaux à plusieurs dimensions en langage C
Algorithmique & Langage C
Programmation Orientée Objet I. Introduction
Python for beginners Qu'est ce que Python
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 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)
Programmation en C++ C++ de base
PROGRAMMATION ET ENSEIGNEMENT
Exercice PHP DEUST TMIC
Entrées/Sorties - Variables - Calculs - Alternative
Exercice : le jeu. Vous devez concevoir l’algorithme permettant de jouer avec votre calculatrice : elle détermine au hasard un nombre caché entier entre.
Initiation à la programmation
Révision du format des données
MINISTÈRE DE L’ENSEIGNEMENT SUPÉRIEUR ET DE LA RECHERCHE SCIENTIFIQUE
B.Shishedjiev - Informatique
Question flash TSTI2D.
Semaine #2 INF130 par Frédérick Henri.
Automatismes 3.
Le programme informatique L’algorithme Le codage
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.
Exercices récapitulatifs
PROGRAMMATION ET ENSEIGNEMENT
Quelle est la valeur de S après exécution des instructions suivantes :
Le langage C# : Partie 1.
Introduction à L’Informatique
Les Définition Les expressions Algebriques
Introduction à L’Informatique
Introduction à L’Informatique
Python Nicolas THIBAULT
PROGRAMMATION SOUS R. PRESENTE PAR : ACHETTOU ISMAIL LAARICH TARIQ ENCADRE PAR : Pr. EXPOSÉ SUR LA PROGRAMMATION SUR R 2.
Transcription de la présentation:

CINI – Li115 1 Semaine 4 Révisions ● Questions de cours ● Types des expressions ● Déclaration de variables ● Instruction conditionnelle et boucles ● Structure d'un programme ● Bibliothèque graphique ● Tirage pseudo-aléatoire

CINI – Li Questions de cours (1/2) ● Le langage C est un langage : ● Fonctionnel ? ● Interprété ? ● Impératif ? ● Compilé ? ● Typé ? ● Incontournable ? ● Combien de types de boucles existe-t-il en C ? ● Deux, trois, quatre ? ● Le langage C permet-il de représenter la valeur π ? ● Oui – Non

CINI – Li Questions de cours (1/2) ● Le langage C est un langage : ● Fonctionnel – Non : un programme est avant tout une séquence d'instructions. C'est donc un langage impératif. ● Interprété – Non : un programme C doit être traduit en langage machine pour être exécuté. C'est donc un langage compilé. ● Typé – Oui : le compilateur vérifie les types des variables (et fait certaines conversions automatiquement). ● Combien de types de boucles existe-t-il en C ? ● Trois : for, while, do-while. if n'est pas une boucle. ● Le langage C permet-il de représenter la valeur π ? ● Non, seulement une approximation. Les éléments de type float ne sont pas des nombres réels (seulement des décimaux). Correction

CINI – Li Questions de cours (2/2) ● Dans quel cas doit-on (de préférence) utiliser une boucle for ? ● Dans quel cas doit-on (de préférence) utiliser une boucle do- while ? ● Peut-on remplacer une boucle for par une boucle while ?

CINI – Li Questions de cours (2/2) ● Dans quel cas doit-on (de préférence) utiliser une boucle for ? ● Lorsqu'on connaît à l'avance le nombre d'itérations (par exemple, pour tracer un carré dont on connaît la longueur). ● Dans quel cas doit-on (de pref.) utiliser une boucle do-while ? ● Lorsque le bloc d'instructions à répéter doit absolument être exécuté au moins une fois (par exemple, pour initialiser une variable et contrôler sa valeur). ● Peut-on remplacer une boucle for par une boucle while ? ● Oui : en C et dans les langagés dérivés (C++, Java...), le for n'est qu'une autre écriture d'une boucle while. ● Le for correspond à une structure de boucle très spécifique (répétition sur un ensemble fini de valeurs) et c'est une bonne habitude de programmation de l'utiliser dans ce cas. Cela permet de mettre en évidence les paramètres (le nombre de passages, la valeur de début, le pas d'itération...). Correction

CINI – Li Types des expressions ● Donnez le type et, le cas échéant, la valeur, de chacune des expressions suivantes : ● 'a' ● -7.1 ● "a" ● 3+2 ● ● 3/-2 ● 3.0/2 ● 'A'+3 ● 2/"a" ● "a"+"b"

CINI – Li Types des expressions ● Donnez le type et la valeur des expressions suivantes : – charla lettre a ou la valeur 97 ● floatla valeur -7,1 ● stringla chaîne a ● intla valeur 5 ● floatla valeur 9,1 ● intla valeur -1 ● floatla valeur 1,5 ● charla valeur 'D' ou 68 ● rien du tout – erreur: invalid operands to binary / (have ‘char *’ and ‘int’) ● rien du tout – erreur: invalid operands to binary + (have ‘char *’ and ‘char *’) – → ça n'est pas comme cela qu'on concatène des chaînes ! Correction 'a' -7.1 "a" /-2 3.0/2 'A'+3 2/"a" "a"+"b"

CINI – Li Déclarations de variables ● Quelles sont les déclarations correctes et, le cas échéant, quelles sont les valeurs des variables ? ● int _qsd; int 'toto;int 2befree; int ALKqsdlkazA; ● int a = 3; char i; string 'm'; ● int c,d=3; ● float e = 3; int f = 3.2; float g = 3,2; ● char h = "c"; char j = 'a'; char k = 35; int l = 'a'; ● bool n = no; bool m = false; bool o = 1;

CINI – Li Déclarations de variables Correction ● Quelles sont les déclarations correctes ? ● int _qsd; int ALKqsdlkazA; ● int 'toto; ● int 2befree; ● ● int a = 3; ● char i; ● int c,d=3; ● float e = 3; ● int f = 3.2; OK (non initialisé) → attention : caractère ' de terminaison manquant → erreur: expected identifier or ‘(’ before numeric constant OK (valeur 3) OK mais non initialisé (pas 'i') OK : d vaut 3 mais c non initialisée OK (valeur 3.0) OK ! (valeur 3) arrondi implicite sans aucun message d'erreur ! => C'est MAL ! À éviter à tout prix ! int f = (int)3.2; pour l'opérateur d'arrondi explicite.

CINI – Li Déclarations de variables Correction ● Quelles sont les déclarations correctes ? ● Propositions de correction ● int _qsd = 0; int ALKqsdlkazA = 0; ● int quote_toto; ● int tobefree; ● int a = 3; ● char i = 'w'; ● string m = "toto"; ● int c = 0, d=3; ● float e = 3; ● int f = (int)3.2;

CINI – Li Déclarations de variables ● Quelles sont les déclarations correctes ? ● → error: expected identifier or '(' before numeric constant ● → attention : initialization makes integer from pointer without a cast ● ● Correction float g = 3,2; char h = "c"; char j = 'a'; char k = 35; int l = 'a'; bool n = no; bool m = false; bool o = 1; → erreur 'no' undeclared (first use in this function) OK ! (valeur false) OK ! (valeur true) => à éviter... OK ! (valeur 97) => à éviter ! OK ! (valeur '#')- code ASCII 35 => à éviter ! OK ! (valeur de 'a')

CINI – Li Déclarations de variables ● Quelles sont les déclarations correctes ? ● Propositions de correction ● float g = 3.2; ● char h = 'c'; ● char j = 'a'; ● char k = '#'; ● int l = 97; ● bool n = false; ● bool m = false; ● bool o = true; Correction

CINI – Li Instruction conditionnelle (1/2) ● Quelle est la valeur de la variable a après l'exécution de ce bloc d'instructions ? ● int a = 3, b = 5; ● if ((a+2)<b) { ● a = a+b; ● } else ● b = b*2; ● a = a-b; ● Et si la valeur initiale de a était 1 ? ● int a = 1, b = 5; ●...

CINI – Li Instruction conditionnelle (1/2) ● Quelle est la valeur de la variable a après l'exécution de ce bloc d'instructions ? ● int a = 3, b = 5;a : 3, b : 5 ● if ((a+2)<b) {5 < 5 : faux ● a = a+b; ● } else→ directement ici ● b = b*2;b : 10 ● a = a-b;a : -7 ● → a vaut -7 ● Le programme est: ● 1. MAL INDENTÉ ! ● 2. MAL PARENTHESÉ ! Correction

CINI – Li Instruction conditionnelle (1/2) ● Et si la valeur initiale de a était 1 ? ● int a = 1, b = 5;a : 1, b : 5 ● if ((a+2)<b) {3 < 5 : vrai ● a = a+b;a : 6 ● } elseon passe le else … ● b = b*2;… qui ne contient ● qu'une instruction ! ● a = a-b;a : 1 ● → a vaut 1 ! ● → Attention aux accolades oubliées ! ● (qui se détectent simplement en indentant le programme) Correction

CINI – Li Instruction conditionnelle (2/2) ● À l'aide d'instructions conditionnelles, écrivez un programme qui calcule dans une variable resultat le plus petit entier non négatif entre deux entiers donnés a et b. ● resultat = -1 si les deux valeurs sont négatives : ● #include ● int main() { ● int resultat; ● int a = 7, b = -5; ● … (à vous) … ● return 0; ● }

CINI – Li Instruction conditionnelle (2/2) ● Un programme qui calcule la plus petite valeur non-négative : ● if ((a<0)&&(b<0)) { ● resultat = -1; ● } else { ● if (a>b) { ● if (b<0) { ● resultat = a; ● } else { ● resultat = b; ● } ● } else { ● if (a<0) { ● resultat = b; ● } else { ● resultat = a; ● } Correction Il existe d'autres solutions (plus compactes)

CINI – Li Boucles (1/2) ● Quels morceaux de programmes affichent toutes les lettres minuscules de l'alphabet ? char b; for (b='a';b<'z';b++) { CINI_print_char(b); } char b = 'a'; while (b<='z') { CINI_print_char(b); b++; } char b = 'a'; do { CINI_print_char(b); b++; while (b<='z'); char b = 'a'; while (b<='z') CINI_print_char(b); b++; char b; for(b='a';b<='z';b++) { CINI_print_char(b); b++; } char b; for(b='a';b<='z';b++) CINI_print_char(b);

CINI – Li Boucles (1/2) ● Quels morceaux de programmes affichent toutes les lettres minuscules de l'alphabet ? char b; for (b='a';b<'z';b++) { CINI_print_char(b); } char b = 'a'; while (b<='z') { CINI_print_char(b); b++; } char b = 'a'; do { CINI_print_char(b); b++; while (b<='z'); char b = 'a'; while (b<='z') CINI_print_char(b); b++; char b; for(b='a';b<='z';b++) { CINI_print_char(b); b++; } char b; for(b='a';b<='z';b++) CINI_print_char(b); Correction Erreur de syntaxe : il Manque une accolade Erreur sur la condition de sortie Pas d'accolade → boucle infinie ! On ne modifie JAMAIS la variable de contrôle dans la boucle for !

CINI – Li Structure d'un programme ● Complétez le programme suivant : ● ______________ ● _____ main ________ { ● int a = N; ● CINI_print_int(a+2); /* affiche 5 */ ● CINI_newline(); ● ______________ ● }

CINI – Li Structure d'un programme ● Complétez le programme suivant : ● #include ● #define N 3 ● int main() { ● int a = N; ● CINI_print_int(a+2); /* affiche 5 */ ● CINI_newline(); ● return 0; ● } Correction

CINI – Li Bibliothèque graphique ● Écrivez un programme qui trace une ligne horizontale de L=100 pixels de long à partir du point A=(X0,Y0) X0X0 + L Y0

CINI – Li Bibliothèque graphique ● Écrivez un programme qui trace une ligne horizontale de L pixels de long à partir du point A=(X0,Y0) ● Ici, A=(10,10) et L=100 ● #include ● #define X0 10 ● #define Y0 10 ● #define L 100 ● int main() { ● CINI_open_fullscreen(); /* ou window... */ ● CINI_draw_line(X0,X0,X0+L,Y0,"black"); ● CINI_loop(); /* laisser voir... */ ● return 0; ● } Correction

CINI – Li Bibliothèque graphique ● Écrivez un programme qui dessine un triangle rectangle plein, de sommets A = (10,10), B = (10,200) et C = (100,200) ● Indice: pour « remplir » le triangle, on utilisera des tracés de lignes horizontales, verticales ou obliques (au choix) A B C

CINI – Li Bibliothèque graphique ● Écrivez un programme qui dessine un triangle rectangle plein, de sommets A = (10,10), B = (10,200) et C = (100,200) 1. Partie « primitives de préprogrammation » (début du programme) ● #include ● #define XA 10et on rajoute même: ● #define YA 10 #define MARGE 10 ● #define XB 10 ● #define YB 200 ● #define XC 100 ● #define YC 200 Correction

CINI – Li Bibliothèque graphique ● Écrivez un programme qui dessine un triangle rectangle plein, de sommets A = (10,10), B = (10,200) et C = (100,200) 2. La fonction main ● int main() { ● int i; ● CINI_open_window(XC-XA+MARGE*2,YC-YA+MARGE*2,"fenetre"); ● for(i=YA;i<=YB;i++) { ● CINI_draw_line(XA, i, ● XA+((i-YA)*(XC-XB)/(YB-YA)), i ● "blue"); ● } ● CINI_loop(); ● return 0; ● } Correction Théorème de Thalès : A BC MN AM AB MN BC =

CINI – Li Tirage pseudo-aléatoire ● Complétez le programme suivant qui doit afficher deux nombres entre 1 et 6. ● #include ● int main() { ● ___________________ ● CINI_print_int(___________________); ● CINI_print_string(" et "); ● CINI_print_int(___________________); ● CINI_newline(); ● return 0; ● }

CINI – Li Tirage pseudo-aléatoire ● Complétez le programme suivant qui doit afficher deux nombres entre 1 et 6. ● #include ● int main() { ● CINI_print_int(CINI_random(1,6)); ● CINI_print_string(" et "); ● CINI_print_int(CINI_random(1,6)); ● CINI_newline(); ● return 0; ● } Correction