Tutorat en bio-informatique Le 31 octobre 2012. Exercice 3 et 4 (MAT1400) Chapitre 9.3, Analyse - concepts et contextes vol. 2 25) Quel est le vecteur.

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

La boucle for : init7.c et init71.c
Les matrices.
Portée des variables VBA & Excel
Interactivé: L'Action Script.
Calculs de complexité d'algorithmes
DECLARATION DE VARIABLES
GEF 243B Programmation informatique appliquée Boucles §
GEF 243B Programmation informatique appliquée
II- Les structures de contrôle à condition d’arrêt
Les Structures de contrôles itératives
L’ interruption de boucle
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
5. Les structures répétitives
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
Section VI Structures répétitives (suite)
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Cours de programmation
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Récursivité.
Points importants de la semaine Les boucles. Les types arithmétiques. Les opérateurs.
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
Algorithmique et structure de données
Les éléments de base de l’algorithmique
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Python La structure itérative
Algorithme de Bellman-Ford
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Introduction à la programmation I Fonctions Structures de contrôle Structures de données (arrays simples et indexés) Variables locales et globales.
Points importants de la semaine Les constantes. Les boucles. Les opérateurs relationnels Les opérateurs logiques.
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.
Tutorat en bio-informatique Le 21 novembre Exercices 2 et 3 (MAT1400) - solutions Chapitre 11.7, Analyse - concepts et contextes vol. 2 27) Cherchez.
Répéter dans un programme avec une Instruction itérative
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.
Structures alternative et répétitive
L’essentiel du langage C
Animateur : Med HAIJOUBI
1 Notations Asymptotiques Et Complexité Notations asymptotiques : 0 et  Complexité des algorithmes Exemples de calcul de complexité.
La Boucle Repeat Cours LCS N°1 Présenté par Mr: LALLALI.
Programmation linéaire en nombres entiers
 Syntaxe du langage PHP
Tutorat en bio-informatique Le 14 novembre Au programme… Les objets –Propriétés (attributs) –Constructeurs –Méthodes.
Introduction au langage C Fonctions et Procédures
Cours n° 3 Traitements en Java
Cours LCS N°4 Présenté par Mr: LALLALI
Tutorat en bio-informatique Le 10 octobre Au programme… Rappel sur les variables Constantes Conditions Comparaisons Tables de vérité Switch.
Tutorat en bio-informatique Le 12 octobre Exercices 3 et 4 (MAT1400) - solutions La série du binôme (chap. 8.8) –Trouver la série entière et le.
1 PHP 5 Notions fondamentales (niveau 1 – cours #2) Formation continue – Cégep de Sainte-Foy.
Introduction au langage C : Structures de contrôle 1 ère année Génie Informatique Dr Daouda Traoré Université de Ségou
1. Spoon Christophe Delagarde, septembre 1998 I.U.T., Université de la Méditerrainée 2.
CPI/BTS 2 Algorithmique & Programmation La récursivité Algo – Prog CPI/BTS2 – M. Dravet – 14/09/2003 Dernière modification: 14/09/2003.
Introduction à la programmation (420-PK2-SL) cours 8
Tutorat en bio-informatique Le 2 novembre Exercice 5 et 6 (MAT1400) Chapitre 9.7, Analyse - concepts et contextes vol. 2 23) Écrivez l'équation.
Scripts et fonctions Instructions de contrôle
Une aide pour débutant éclairé
PRO-1027 Programmation Scientifique en C
Algorithmique Tableaux de données
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Philippe Gandy - 22 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
02/10/2015Les structures de contrôle1 COURS A2I12 Initiation à l'algorithmique illustrée par le langage C Guillaume BOURLET Département GEII IUT Sénart/Fontainebleau.
Algorithmique Algorithmique  Pascal
Philippe Gandy – 6 octobre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Philippe Gandy – 10 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Algorithmique Boucles et Itérations
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.
Philippe Gandy – 13 octobre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Introduction à l’Informatique chap 3 Licence SPI Mme Delmotte.
Java Réalisé par: Mouna POKORA. PLAN: Définition : Historique: Caractéristiques: un langage orienté objet: un langage interprété : un langage portable:
O UTILS DE P ROGRAMMATION P OUR LES M ATHÉMATIQUES Mr. BENDIB. I MAA, LAMIS Laboratory, Université Larbi Tébessi - Tébessa.
Transcription de la présentation:

Tutorat en bio-informatique Le 31 octobre 2012

Exercice 3 et 4 (MAT1400) Chapitre 9.3, Analyse - concepts et contextes vol. 2 25) Quel est le vecteur tel que, si ? 29) Une femme tire avec une force de 100 N, exercée horizontalement, une caisse qu'elle amène 3 m plus loin sur un plan incliné qui fait un angle de 20 ° avec l'horizontale. Calculez le travail effectué sur la caisse.

Exercice 3 et 4 (MAT1400) - solutions Chapitre 9.3, Analyse - concepts et contextes vol. 2 25) Quel est le vecteur tel que, si ?

Exercice 3 et 4 (MAT1400) - solutions Chapitre 9.3, Analyse - concepts et contextes vol. 2 29) Une femme tire avec une force de 100 N, exercée horizontalement, une caisse qu'elle amène 3 m plus loin sur un plan incliné qui fait un angle de 20 ° avec l'horizontale. Calculez le travail effectué sur la caisse. 20° 3 m 100 N

Rappel if(true) print("Imprime"); else if(true) print("N'imprimera jamais"); else if(true) print("Pas d'impression non plus"); else print("Certainement pas ici non plus");

Rappel if(true) print("Imprime"); else if(true) print("N'imprimera jamais"); else if(true) print("Pas d'impression non plus"); else print("Certainement pas ici non plus"); Vrai! Exécution de l'instruction et …

Rappel if(true) print("Imprime"); else if(true) print("N'imprimera jamais"); else if(true) print("Pas d'impression non plus"); else print("Certainement pas ici non plus"); … saut jusqu'aux prochaines instructions suivant la structure de if - else if - else Vrai! Exécution de l'instruction et …

Rappel if(true) print("Imprime"); if(true) print("Imprime"); if(true) print("Imprime"); if(true) print("Imprime");

Rappel if(true) print("Imprime"); if(true) print("Imprime"); if(true) print("Imprime"); if(true) print("Imprime"); Vrai! Exécution de l'instruction.

Rappel if(true) print("Imprime"); if(true) print("Imprime"); if(true) print("Imprime"); if(true) print("Imprime"); Vrai! Exécution de l'instruction.

Rappel if(true) print("Imprime"); if(true) print("Imprime"); if(true) print("Imprime"); if(true) print("Imprime"); Vrai! Exécution de l'instruction.

Rappel if(true) print("Imprime"); if(true) print("Imprime"); if(true) print("Imprime"); if(true) print("Imprime"); Vrai! Exécution de l'instruction.

Rappel var s; if(s != undefined && s.charAt(15) == 'b') print("Le caractere a la pos. 15 est un b");

Rappel var s; if(s != undefined && s.charAt(15) == 'b') print("Le caractere a la pos. 15 est un b"); Faux! Donc la 2e condition n'est même pas vérifiée. La deuxième condition d'un && est vérifiée seulement si la première condition est vraie.

Rappel var s2 = null; if(s2 == null || s2.length == 0) print("La string est vide");

Rappel var s2 = null; if(s2 == null || s2.length == 0) print("La string est vide"); Vrai! Donc la 2e condition n'est même pas vérifiée. La deuxième condition d'un || est vérifiée seulement si la première condition est fausse.

Au programme… Les boucles for Les boucles while Les boucles do-while

Les boucles On se sert des boucles lorsqu’on veut que le programme fasse plusieurs fois la même action (la même partie de code). Les boucles nous permettent de réduire grandement le nombre de lignes de notre programme.

Les boucles Revenons sur notre exemple en bio-informatique : On veut calculer le pourcentage de A dans la séquence suivante : AGCTAAGTACAAAGTAACAG var sequence = "AGCTAAGTACAAAGTAACAG"; var seqLength = sequence.length; var nbA = 0; var nucleo;

Les boucles Suite de l'exemple: var index = 0; if (index < seqLength) { nucleo = sequence.charAt(index); if (nucleo == 'A') nbA++; } index++; if (index < seqLength) { nucleo = sequence.charAt(index); if (nucleo == 'A') nbA++; }... Il faudrait répéter ces 7 lignes de code 20 fois!

Les boucles Il existe 3 types de boucles en Java : –les boucles for –les boucles while –les boucles do-while Il est toujours possible de réaliser la même action avec les trois types de boucles, mais souvent, il semblera plus approprié d'utiliser un type dans une certaine situation.

Les boucles for Définitivement le type de boucle dont vous allez vous servir le plus souvent. Dans la déclaration d'une boucle for, on initialise un "compteur" dont la valeur changera à la fin de chaque itération tant qu'une certaine condition sera vraie.

Les boucles for for (var i = 0; i < 5; i++) Initialisation d'un compteur (une variable) La condition De quelle façon la valeur du compteur doit changer à la fin de l'itération Les deux ';' servent à séparer les trois éléments qui sont à l'intérieur des parenthèses.

Les boucles for Retour sur l'exemple en bio-informatique, avec une petite erreur logique! var sequence = "AGCTAAGTACAAAGTAACAG"; var seqLength = sequence.length; var nbA = 0; var nucleo; for (var i = 0; i <= seqLength; i++) { nucleo = sequence.charAt(i); if (nucleo == 'A') { nbA++; }

Les boucles for Exemple en bio-informatique corrigé : var sequence = "AGCTAAGTACAAAGTAACAG"; var seqLength = sequence.length(); var nbA = 0; //var nucleo; for (var i = 0; i < seqLength; i++) { //nucleo = sequence.charAt(i); if (sequence.charAt(i) == 'A') { nbA++; }

Les boucles for Un deuxième exemple, avec une erreur encore une fois! var sequence = "AGCTAAGTACAAAGTAACAG"; var seqLength = sequence.length; var reverseSeq; for (var i = seqLength-1; i >= 0; i--) { reverseSeq += sequence.charAt(i); } print("La sequence inverse est : " + reverseSeq); La sequence inverse est : undefinedGACAATGAAACATGAATCGA

Les boucles for Un deuxième exemple corrigé : var sequence = "AGCTAAGTACAAAGTAACAG"; //var seqLength = sequence.length; var reverseSeq = ""; for (var i = sequence.length-1; i >= 0; i--) { reverseSeq += sequence.charAt(i); } print("La sequence inverse est : " + reverseSeq);

Les boucles for Un troisième exemple : On veut imprimer dans la console tous les nombres pairs de 2 à 50 (inclusivement). On pourrait écrire la boucle de cette façon: for (var i = 2; i <= 50; i++) { if (i % 2 == 0) { print(i); } Toutefois, on peut rendre notre code plus efficace…

Les boucles for Un troisième exemple (suite) : for (var i = 2; i <= 50; i+=2) { print(i); } Notre boucle fait maintenant deux fois moins d'itérations. De plus, on n'a plus besoin de faire une vérification à l'intérieur de la boucle. Vous pouvez aussi utiliser -=, *= ou /= pour modifier le compteur.

Exercice 1 Écrivez un programme qui prend une séquence d'ADN et qui imprime la séquence complément inverse. À titre d'exemple, la séquence complément inverse de AACGCAT est ATGCGTT. Le début du programme vous est donné: var seq = "ACGAGAAGTCAAGTA"; var revComp = "";

Exercice 1 (réponse) var seq = "ACGAGAAGTCAAGTA"; var revComp = ""; for(var i = seq.length-1; i >= 0; i--) { if(seq.charAt(i) == 'A') revComp += 'T'; else if(seq.charAt(i) == 'C') revComp += 'G'; else if(seq.charAt(i) == 'G') revComp += 'C'; else if(seq.charAt(i) == 'T') revComp += 'A'; } print("Le complément inverse de " + seq + " est " + revComp);

Les boucles for Parfois, on peut vouloir répéter des actions à l'intérieur d'une action répétée. Comme avec les conditions (if, else if, else), il est possible d'imbriquer les boucles.

Les boucles for Un exemple de boucle imbriquée : On veut inverser et imprimer plusieurs séquences entrées en arguments. for (var i = 0; i < arguments.length; i++) { var reverseSeq = ""; for (var k = arguments[i].length-1; k >= 0; k--) { reverseSeq += arguments[i].charAt(k); } print(reverseSeq); }

Les boucles for Un exemple de boucle imbriquée : On veut inverser et imprimer plusieurs séquences entrées en arguments. for (var i = 0; i < arguments.length; i++) { var reverseSeq = ""; for (var k = arguments[i].length-1; k >= 0; k--) { reverseSeq += arguments[i].charAt(k); } print(reverseSeq); } Pour exécuter un programme avec des arguments : rhino Programme.js argument1 argument2

Exercice 2 Vous voulez noircir les cases en haut de la diagonale (diagonale incluse) dans un tableau de grandeur 10 x 10. Une fonction vous est fournie pour noircir une case à la fois. Par exemple, pour noircir la case située sur la ligne 0 et la colonne 5, on doit écrire : noircir(0, 5); Utilisez les boucles for imbriquées pour écrire le code qui fera noircir les cases appropriées pour obtenir le tableau en haut à droite.

Exercice 2 (réponse) for (var i = 0; i < 10; i++)//La ligne { for (var j = i; j < 10; j++)//La colonne { noircir(i,j); }

Les boucles for Attention aux boucles infinies! La condition doit permettre à la boucle de se terminer. Si ce n'est pas le cas, l'ordinateur va répéter les instructions de la boucle à l'infini. for (var i = 0; i != 25; i+=3) { print(i); } Cette boucle ne se terminera jamais, car 25 n'est pas un multiple de 3.

Les boucles while Il s'agit du deuxième type de boucle le plus utilisé. La boucle while est déclarée avec une condition uniquement (pas de compteur comme dans les boucles for). La syntaxe ressemble à celle d'un if ou else if.

Les boucles while while (i < 5) La condition Dans ce cas, la variable 'i' doit être déjà déclarée (et initialisée). On peut évidemment utiliser un boolean comme condition.

Les boucles while Exemple (compter le nombre de 'A') : var sequence = "AGCTAAGTACAAAGTAACAG"; var seqLength = sequence.length(); var nbA = 0; var i = 0; while (i < seqLength) { if (sequence.charAt(i) == 'A') { nbA++; } i++; }

Les boucles while Exemple 2 (trouver la position du 3e 'A') : var sequence = "AGCTAAGTACAAAGTAACAG"; var seqLength = sequence.length; var nbA = 0; var i = 0; while (i < seqLength && nbA < 3) { if (sequence.charAt(i) == 'A') nbA++; i++; } if (nbA == 3) print("Le 3e A est à la position : " + (i-1));

Exemple 2 -> version for : var sequence = "AGCTAAGTACAAAGTAACAG"; var seqLength = sequence.length; var nbA = 0; for (var i = 0; i < seqLength && nbA < 3; i++) { if (sequence.charAt(i) == 'A') nbA++; } if (nbA == 3) print("Le 3e A est à la position : " + (i-1));

L'instruction break Elle permet de sortir d'une boucle (arrêter d'itérer). Elle peut être utilisée dans n'importe quel type de boucle.

L'instruction break Exemple : var sequence = "AGCTAAGTACAAAGTAACAG"; var seqLength = sequence.length; var nbA = 0; for (var i = 0; i < seqLength; i++) { if (sequence.charAt(i) == 'A') { nbA++; if (nbA == 3) { print("Le 3e A est à la position : " + i); break; }

L'instruction continue Elle permet de passer immédiatement à l'itération suivante (en n'exécutant pas les instructions restantes dans l'itération courante). Elle peut être utilisée dans n'importe quel type de boucle.

L'instruction continue Exemple : var sequence = "AG--CTAAGT-ACAAA--G---TAAC-AG"; var seqLength = sequence.length; var nbNucleoNoGaps = 0; for (var i = 0; i < seqLength; i++) { if (sequence.charAt(i) == '-') continue; nbNucleoNoGaps++; }

Étiquettes Les instructions break et continue affectent uniquement la boucle qui les contient directement. Dans le cas de boucles imbriquées, si on veut affecter une boucle externe, on doit l'étiqueter.

Étiquettes Exemple : externe: for(var i = 0; i < 10; i++) { for(var j = 0; j < 5; j++) { var mult = i * j; if(mult > 25) break externe; print(mult); }

Exercice 3 Transformez cette boucle for en boucle while : var dixFactoriel = 1; for (var i = 2; i <= 10; i++) { dixFactoriel *= i; } Réponse: var dixFactoriel = 1; var i = 2; while(i <= 10) { dixFactoriel *= i; i++; }

Les boucles while Pour vous montrer à quel point les boucles while et for sont similaires : est équivalent à var dixFactoriel = 1; var i = 2; for(;i <= 10;) { dixFactoriel *= i; i++; } var dixFactoriel = 1; var i = 2; while(i <= 10) { dixFactoriel *= i; i++; }

Les boucles do-while Ce type de boucle est utilisé plus rarement. Les boucles do-while permettent de faire les instructions de la boucle au moins une fois. Les boucles do-while ressemblent aux boucles while, sauf que les instructions sont exécutées avant la vérification de la condition.

Les boucles do-while do { instructions } while (i < 5); La condition Dans le cas où i est un compteur, on doit l'avoir initialisé avant le 'do'. On peut évidemment utiliser un boolean comme condition.

Les boucles do-while Exemple : do { var age = readAge(); } while (age == -1); La fonction readAge() demande à l'utilisateur d'entrer un nombre entier et retourne soit l'âge, soit -1 (si l'utilisateur a fait une erreur).

Les boucles do-while Exemple : do { var age = readAge(); } while (age == -1); La fonction readAge() demande à l'utilisateur d'entrer un nombre entier et retourne soit l'âge, soit -1 (si l'utilisateur a fait une erreur). //équivalent à var age = -1; while (age == -1) { age = readAge(); }

Exercice 4 Vous voulez noircir les cases suivantes dans un tableau de grandeur 10 x 10. Une fonction vous est fournie pour noircir une case à la fois. Par exemple, pour noircir la case située sur la ligne 0 et la colonne 5, on doit écrire : noircir(0, 5); Utilisez les boucles for imbriquées pour écrire le code qui fera noircir les cases appropriées pour obtenir le tableau en haut à droite.

Exercice 4 (réponse) for (var i = 0; i < 10; i++)//La ligne { for (var j = 0; j < 10; j++)//La colonne { if ((i+j) % 2 == 0) noircir(i,j); } OU for (var i = 0; i < 10; i++)//La ligne { for (var j = (i % 2); j < 10; j+=2)//La colonne { noircir(i,j); }

Exercice 5 et 6 (MAT1400) Chapitre 9.7, Analyse - concepts et contextes vol. 2 23) Écrivez l'équation a) en coordonnées cylindriques et b) en coordonnées sphériques : 29) Un solide est délimité inférieurement par le cône et supérieurement par la sphère. Écrivez des inéquations en coordonnées sphériques qui correspondent à ce solide.