Boucle For et boucle While - Lequel choisir ?

Bonjour à tous,
Petite question : dans la mesure du possible, est-il préférable d'utiliser une boucle while ou une boucle for ?
Cordialement,
Geoffrey, LabVIEW Associate Developer

C'est légèrement différent, on peut décider de ce qu'il faut faire si la boucle prend du retard (sortir et donner une erreur, attendre un multiple de, ignorer le retard).
Mais si il n'y a pas de problème de cadence dans une boucle while ou for, il est fort peu probable que ça jouera aussi avec une timed loop. L'avantage sera que si d'autre tâches viennent prendre de la ressource pendant que cette boucle tourne, "normalement" (oui... on est sous Windows...) la timed loop bénéficie d'une priorité plus élevée.
Note : le "attendre un multiple de" est très bien mais attention au piège car si le code met plus que la valeur demandée pour s'exécuter, on attend le prochain multiple et ça peut (pas forcément mais c'est possible) décaler encore plus. 
When my feet touch the ground each morning the devil thinks "bloody hell... He's up again!"

Similar Messages

  • Boucle FOR dans une boucle while avec un registre à décalage

    Bonjour à tous,
    je rencontre un problème au niveau de l'indexation de l'execution de mes commandes.
    Lorsque j'exécute mon programme, seulement la dernière commande est prise en compte.
    Faut-il enlever mon registre à décalage? Changer le mode du tunnel ?
    Cordialement
    Pièces jointes :
    Boucle FOR, while.JPG ‏134 KB

    ça peut avoir son utilité lorsque le diagramme est conséquent et illisible
    alors c'est que tu "reprends en main" le diagram d'un autre .... 
    sinon... si c'est le tien ... il ne sera jamais illisible.
    Et si tu veux "gagner du temps" ... je t'assure ... cable "propre" du premier coup.
    Lisibilité, compréhensibilité, évolutivité ... tu seras gagnant à tous les coups. (à 1000%)
    Sans compter "le coup d'oeil" quand "un autre" ouvrira ton code.
    Avant d'aller plus loin et de comprendre quoi que ce soit dans ce que tu as fait ...
    la propreté de ton diagram sera "ta signature".
    Ah oui ... un diagramme aussi propre que ça ... ça ne peut être que Geoffrey !
    ça l'fait non ?  

  • Boucle FOR dans une boucle while

    Bonjour à tous,
    je rencontre un problème, car lorsque j'exécute une série de commande dans boucle FOR, celle ci ne s'arrête jamais.
    Ma boucle FOR est censée exécuter toutes les sections lues à partir d'un fichier de configuration  et s'arrêter.
    Mais elle répète en boucle mes sections..
    Je ne vois pas bien d'où vient mon problème.
    Cordialement
    Résolu !
    Accéder à la solution.
    Pièces jointes :
    Mode _Auto_Cluster.vi ‏151 KB

    @aznnath : 
    Mode_Auto_Cluster.vi.
    jolie surprise, bravo pour l'effort évident de propreté du BD. (on va dans la bonne direction)
    une certaine réponse était peut-être un rien "rigide".
    à ma décharge, une certaine forme de récurrence n'aide pas.
    et respect à TiTou pour sa déterminantion dans l'aide qu'il t'apporte.

  • Boucle FOR et tableau de cluster

    Bonjour,
    J'ai créé un tableau de cluster contenant deux éléments et je souhaite que l'indice de mon tableau corresponde au "i" d'une boucle FOR;
    ce qui me permettrait de remplir les valeurs de mes clés à chaque itération.
    Ci-joint mon VI.
    Cdt
    Résolu !
    Accéder à la solution.
    Pièces jointes :
    Test_Scenario.vi ‏12 KB

    Bonjour,
    Je t'invite à te renseigner sur l'auto-indexation des boucles FOR:
    Auto-Indexing Tunnels with For Loops and While Loops in LabVIEW
    L'auto-indexation va permettre que ta boucle FOR s'exécute autant de fois que tu as d'élément dans ton tableau.
    L'itération 0 prendra donc l'élément à l'indice 0 de ton tableau. 
    L'itération 1 prendra donc l'élément à l'indice 1 de ton tableau.
    Bonne journée,
    Valentin
    Certified TestStand Architect
    Certified LabVIEW Developer
    National Instruments France
    #adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
    Travaux Pratiques d'initiation à LabVIEW et à la mesure
    Du 2 au 23 octobre, partout en France
    Pièces jointes :
    auto indexation.vi ‏11 KB

  • Stopper une boucle FOR en cours

    Bonjour à tous
    J'ai une petite question concernant une fonction simple de LABVIEW, en outre la boucle FOR.
    Je voulais savoir si il était possible de stopper l'exécution de cette boucle en cours de route. Par exemple si je dis que ma boucle doit tourner 11 fois et que je rencontre un problème à la 2 ème itération, est il possible de stopper la boucle FOR pour éviter qu'elle fasse les 9 autre itérations.
    Merci pour vos réponses futures

    bonjour,
    il est possible de stopper une boucle for avant sa fin. en faisant un clic droit sur la boucle, vous sélectionnez "Terminal de condition". un carré avec un point rouge apparait (identique que pour une boucle while).
    Cordialement
    L.MICOU

  • Probleme de decalage dans une boucle FOR

    Bonjour j'ai un petit probleme dans ma boucle j'ai un code source et je dois extraire des informations de temperature de vent ... voici les lignes où je dois extraire les infos : 
    <tr class="temp">
    <th scope="row">Temp. (&deg;C)</th>
    <td class="first-col">6&#176;</td>
    <td class="">6&#176;</td>
    <td class="">6&#176;</td>
    <td class="">6&#176;</td>
    <td class="">5&#176;</td>
    <td class="">5&#176;</td>
    <td class="">4&#176;</td>
    <td class="last-col">4&#176;</td>
    </tr>
    <tr class="realfeel">
    <th scope="row">RealFeel&#174;</th>
    <td class="first-col">3&#176;</td>
    <td class="">3&#176;</td>
    <td class="">4&#176;</td>
    <td class="">3&#176;</td>
    <td class="">3&#176;</td>
    <td class="">4&#176;</td>
    <td class="">4&#176;</td>
    <td class="last-col">3&#176;</td>
    </tr>
    <tr class="realfeel">
    <th scope="row">Pr&#233;cipitations</th>
    <td style="border-right:solid 1px #EFECE4;" class="first-col" colspan="3">50%</td>
    <td style="border-right:solid 1px #EFECE4;" class="bggray" colspan="3">50%</td>
    <td class="last-col" colspan="3">40%</td>
    </tr>
    <tr>
    <th scope="row">Vent (km/h)</th>
    <td class="first-col">13 OSO</td>
    <td class="">11 OSO</td>
    <td class="">10 OSO</td>
    <td class="">8 OSO</td>
    <td class="">6 OSO</td>
    <td class="">6 OSO</td>
    <td class="">5 OSO</td>
    <td class="last-col">5 SO</td>
    </tr>
    <tr>
    <th scope="row">Humidit&#233;</th>
    <td class="first-col">80%</td>
    <td class="">81%</td>
    <td class="">82%</td>
    <td class="">85%</td>
    <td class="">87%</td>
    <td class="">90%</td>
    <td class="">92%</td>
    <td class="last-col">93%</td>
    </tr>
    <tr>
    <th scope="row">Indice UV</th>
    <td class="first-col">1</td>
    <td class="">0</td>
    <td class="">0</td>
    <td class="">0</td>
    <td class="">0</td>
    <td class="">0</td>
    <td class="">0</td>
    <td class="last-col">0</td>
    </tr>
    <tr>
    <th scope="row">Couverture nuageuse</th>
    <td class="first-col">83%</td>
    <td class="">100%</td>
    <td class="">100%</td>
    <td class="">100%</td>
    <td class="">100%</td>
    <td class="">100%</td>
    <td class="">100%</td>
    <td class="last-col">100%</td>
    </tr>
    <tr class="last-row">
    <th scope="row">Point de ros&#233;e</th>
    <td class="first-col">3&#176;</td>
    <td class="">3&#176;</td>
    <td class="">4&#176;</td>
    <td class="">3&#176;</td>
    <td class="">3&#176;</td>
    <td class="">3&#176;</td>
    <td class="">3&#176;</td>
    <td class="last-col">3&#176;</td>
    </tr>
     Le probleme que c'est j'ai fais 2 boucle For imbriqué la premiere elle lit les données " les valeurs de la temperature..." et la deuxieme pour quelle passe à la prochaine donnée par exemple:  vent pour que je puisse lire ces valeurs ainsi de suite , mais ca marche pas !!! vu quelle reste toujours dans la premiere donnée "temperature " ensuite elle sort, et  au final j'ai juste les primiere valeurs  AIDER MOI PLZZZZZZ !!! MERCI
    PS : voici mon VI dans les pieces jointes  
    Pièces jointes :
    La total.vi ‏95 KB

    Bonjour,
    Pour ce qui est de récupérer tes valeurs, il suffit de récupérer  et de modifier le Vi que je t'avais envoyé dans le post suivant :
    http://forums.ni.com/t5/Discussions-de-produit-de-NI/remplir-un-tableau/m-p/1870401#M45083
    Il d'y ajouter une boucle For de modifier les fins de lignes et de faire un tableau 1D avec les en-têtes des blocs de mesures que tu veux récupérer, par exemple :
    <th scope="row">Temp. (&deg;C)</th>
    <th scope="row">RealFeel&#174;</th>
    <th scope="row">Vent (km/h)</th>

  • Ecrire dans un fichier de paramètre de configuration avec boucle for

    Bonjour,
    Je cherche à écrire mes paramètres dans un fichier de configuration avec une boucle FOR.
    Selon une condition, des paramètres sont écrits.
    Ci-joint, mon code, pourriez-vous me dire si la strucutre mise en place est correcte ?
    Car c'est la première fois que j'utilise cette fontion.
    Cordialement.
    Résolu !
    Accéder à la solution.
    Pièces jointes :
    Scenario_key.vi ‏37 KB

    Bonjour,
    Pour ton VI, tu manipules un fichier, donc attention, c'est une référence de fichier (un seul fichier ouvert de travail), il faut donc éviter les accès concurents en parallèle pour limiter les risques.
    De plus, comme toute référence, il faut penser à la fermer à la fin de son utilisation pour la libérer.
    Sinon pour ton problème, tu écris bien toutes les valeurs, sauf que comme c'est un fichier INI, chaque section doit avoir un nom unique, sinon, comment retrouver la section qui nous intéresse. Du coup, a chaque fois que tu écris, tu écris toujours dans la même section Palier ou Rampe.
    Ci-joint une version modifié de ton VI.
    Pour résoudre ce genre de problème, il faut utiliser les superbes outils intégrés à LabVIEW pour le débugage. En particulier les points d'arrêt, les sondes et l'animation du code. Avec ces outils, tu peux voir comment les données évolus facilement dans ton VI et ainsi détecter ce type de problème plus facilement.
    Cordialement
    .mesLeft{float:left} .mesInfo{border-left:solid 1px #989898;font-size:x-small;color:#989898} .mesLogo{float:right;opacity:0.18} .mesLogo:hover{opacity:0.9}
    Maxime R.  
      CLD - Certified LabVIEW Developer / Développeur LabVIEW Certifié  
      CLAD - Certified LabVIEW Associate Developer   
    Pièces jointes :
    Scenario_key Modifie.vi ‏50 KB

  • Boucle for manipuler les elements dans un tableau

    j ai un tableau 1D et je vais prendre le premier elt et l'element suivant pour comparer leur difference avec un nombre ensuite je vais prendre le deuxième avec le troisième et ainsi de suite , quand j'utilise une boucle For avec N le nb d'element dans le tableau j'arrive pas à sortir les deux elements successi pour faire mon operation de calcul si quelqu'un peut m'aider
    merci

    Pas de panique ! Le voici en 7.1.
    Je me permets d'attirer votre attention sur le fait qu'il existe un groupe de discussion français et qu'il serait préférable d'y poster les questions dans cette langue.
    Message Edité par JB le 03-19-2008 04:47 PM
    Attachments:
    Comparer valeurs successives tableau 1D.vi ‏16 KB

  • Boucle for

    Slt ,
    Je ne comprend pas comment on utilise la boucle for dans Labview.  J'ai un code d'une boucle for de ce style :
                    for (i=2; i>=10,i++)
                       printf(" ouvrir les fenetre");
                       i++;
    J'aimerais savoircomment le traduire dans l'une des boucles (si For loop n'et pas la bonne) dans labview svp..
    ("Desolée de déranger avec des quedtions comme sa, mais je suis bloquée )

    Bonjour, j'ai une version Anglaise:
    For Loop
    Owning Palette: Structures
    Requires: Base Package
    Executes its subdiagram n times, where n is the value wired to the count (N) terminal. The iteration (i) terminal provides the current loop iteration count, which ranges from 0 to n-1.
    Luc Desruelle | Voir mon profil | LabVIEW Code & blog
    Co-auteur livre LabVIEW : Programmation et applications
    CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW
    CLD : Certified LabVIEW Developer / Certifié Développeur LabVIEW

  • Indexation (boucle For)

    j'ai une boucle For et j'utilise l'indexation en entrée ET en sortie. (en entrée et en sortie, 2x 1D booléens)
    Entre la taille du Tableau d'entrée et "N" ... la boucle For s'arrête au plus petit des deux.
    Si en entrée j'ai un Tableau comportant 0 éléments, la boucle For ne s'exécute pas.
    Le problème n'est pas que mon Tableau d'entrée est vide ...
    car si je fais 'index array" sur un tableau vide (quelque soit l'index) ... la fonction me retourne la valeur par défaut, soit "False".
    L'indexation en entrée s'accommode parfaitement d'un tableau vide,
    Si je pouvais donner la priorité à "N" ... avec un tableau d'entrée vide,
    la boucle For s'exécuterait N fois, et l'indexation d'entrée me donnerait N fois la valeur par défaut.
    Cela m'éviterait l'initialisation, toutes les valeurs par défaut formerait ... un tableau virtuel rempli de "False".
    Je "demande" ... mais je crains que "non" ...
    Serait-il possible de "forcer" une boucle For à donner la priorité à "N" ??
    merci à tous.

    un intérêt ?
    cela <fonctionne> ... en effet.
    Je programme pour le plaisir, et de plus je suis un perfectionniste
    Pour moi, le "résultat" n'est pas une finalité, mais juste un alibi.
    La compréhension du Langage et l'optimisation du code est une drogue.
    ... devant laquelle je ne suis que faiblesses
    (je suis en thérapie comportementale à ce sujet, mais sans grands résultats)

  • Utilisation boucle for avec la machine état

    Bonjour,
    Je viens vous demander quelques conseils d'utilisation du boucle for avec la machine état. Voici le vi ci-joint. Je souhaiterai faire 5 fois la machine état mais à chaque étape de la machine état j'incrémente un tour de boucle et cela ne fait pas 5 fois la machine état. Avez vous une idée pour réaliser cela? Merci d'avance.    
    Pièces jointes :
    essais-boucle-for.vi ‏12 KB

    Salut,
    J'ai testé ton VI pour essayer de comprendre ce que tu cherche à obtenir. En partant de ta constante start en entrée de boucle, tu obtiens la valeur 4 pour "i" et 0 pour "j" ce qui, au vu de ton diagramme, est normal.
    En fait, le premier tour d'une boucle FOR est 0, puis s'incrémente. Ainsi, si tu lui demande de faire 5 tour de boucle, le premier tour sera le n°0, puis 1, etc... jusqu'à 4.
    Je ne sais pas si j'ai été très clair et si cela répond à ta question mais au vu de ce que tu décris je pense que c'est cela.
    Autrement n'hesite pas à me donner plus de détail =)
    @ +

  • Modifier la condition de fin d'une boucle for

    Bonjour à tous,
    Je bute sur un problème qui est de modifier la condtion de fin d'une boucle for. Voici mons soucis, je dipose de deux boucles for imbriquées : l'une est nommée maître et l'autre esclave. Je souhaite qu'après avoir lancé le vi l'utlisateur puisse modifier la valeur de fin de la boucle esclave alors que la boucle maître se trouve toujours à l'indice n.
    En résumé :
    condition avant lancement du vi, "cpt boucle maître" = 10 et "cpt boucle esclave" = 100
    lacement du vi
    lorsque la boucle maître est à l'indice 7 par exemple, que l'indice de la boucle esclave se trouve à l'indice 70.  Si l'utilsateur modifie la valeur "cpt boucle esclave" et la met 200 en validant par le bouton "Valider nouvelle valeur boucle esclave", il faut que la boucle esclave aille jusqu'à l'indice 200 pour l'indice 7 de la boucle maître. Si ce n'est pas possible, il faut que la valeur 200 soit prise en compte pour l'indice 8 de la boucle maître.
    Une de mes contraintes étant de conserve le cluster.
    En vous remerciant
    Djamel
    Résolu !
    Accéder à la solution.
    Pièces jointes :
    boucle maitre esclave.vi ‏10 KB

    Au risque de paraître un peu pédant, je te renvoie vers les règles de développement : http://www.ni.com/pdf/manuals/321393d.pdf
    page 6-10 : Avoid the use of local variables when you can use a wire to transfer
    data. Every local variable that reads the data makes a copy of the data.
    page 6-11 : Use global and local variables as sparingly as possible. You can use
    both global and local variables to write VIs very efficiently. However,
    if you misuse or abuse global and local variables, particularly with data
    types, the memory usage of the VI increases and the performance is
    affected.
    Additionally, you can encounter race conditions when reading from
    and writing to global variables in the same application. These race
    conditions are difficult to debug since there is no data dependency
    between different instances of the same global variable on the block
    diagram.
    Consider using functional global variables instead of global variables.
    Functional global variables do not create extra copies of data and allow
    certain actions such as initialize, read, write, and empty. Refer to the
    Using LabVIEW to Create Multithreaded VIs for Maximum
    Performance and Reliability Application Note for more information
    on using functional global variables.
    Si l'anglais n'est pas ton fort : il existe peut être une bonne âme pour t'aider
    When my feet touch the ground each morning the devil thinks "bloody hell... He's up again!"

  • Incoherenc​e parallelis​me boucle for - LabView 2009

    Bonjour,
    en faisant un test pour estimer le gain a attendre de la parallelisation des boucles for, je suis tombe sur un resultat curieux. La modification du diagramme sur un detail, a priori independant de la boucle for, induit des variations de temps de calcul allant de -56% a +47% de facon tout a fait reproductible. (voir ppt joint)
    A noter (en configuration +47%) qu'en bloquant le nombre de processeurs logiques (P) a 1 on obtient un leger gain de -13% (sans ecart dans les calculs) et si P est a 2, on a -32% (avec ecart dans le calcul pour tous les autres ce qui est logique)  , P=3 => -30%  , P=4 => -41.5%, P=5 => -41.7% qui ne bouge plus en augmentant.
    En configuration -56% le bloquage de P induit une perte de perforamances entre P=2 =>-16%, P=3 =>+20%, P=4 => -20% ...
    Quelqu'un pourrait il confirmer ces resultats sur une autre machine ou aurrait l'idee d'une erreur que j'aurais pu commettre ?
    Merci d'avance
    - Lionel -
    Attachments:
    Labview_2009_parallelisme.ppt ‏651 KB
    test_parallelism_02.vi ‏15 KB

    French to English
    Hello,
    making a test to estimate the gains from parallelization of loops, I came upon a curious result. Changing the chart on a detail, a priori independent of the loop, induces changes in computing time ranging from -56% to +47% for quite reproducible. (see attached ppt)
    Note (commonly 47%) than in blocking the number of logical processors (P) 1 we obtain a slight gain of -13% (without any spread in the calculation) and if P is a 2, a -32 % (with deviations in the calculation for all others that makes sense), P = 3 => -30%, P = 4 => -41.5%, P = 5 => -41.7% that does not move to increase.
    In the configuration -56% blockade of P induces a loss of perforamances between P = 2 => -16%, P = 3 => 20%, P = 4 => -20% ...
    Someone could confirm these results on another machine or aurra the idea of a mistake I have committed? 
    Thank you in advance

  • Problème itération boucle for

    Bonjour à tous !
    Je suis en train de faire un petit programme de détection de pics. J'aimerais éliminer certaines détections qui n'en sont pas.
    Je vous joins une image de ma boucle for. Mon problème c'est que j'obtiens bien ma première détection (t0), et ensuite j'ai la dernière (t(n-1)) qui est bien vérifier avec la condition >1, mais par contre je n'arrive pas a avoir toutes celles du milieu.
    Ex : 1 / 1.5 / 3 / 5.5 / 6
    J'obtiens 1 et 5.5, mais pas le 3 !!
    Aidez moi s'il vous plait, je ne comprends pas pourquoi !!!
    J'espère être claire...
    Merci d'avance pour vos réponses
    Pièces jointes :
    bouclefor.jpg ‏45 KB

    Youpiiii !!!!
    Merci merci merci !!!!
    En fait je viens de trouver la solution à mon problème, c'était tellement simple que ça me déprime d'avoir passé la journée à cherché...
    Je me suis inspiré de votre aide, et en fait j'ai créé un tableau décalé de un en rajoutant un 0, puis j'ai soustrait les deux !!! Du coup je me retrouvais avec un tableau de valeur à comparer à 1...
    Pourquoi faire simple quand on peut faire compliqué !!!
    Encore merci de votre aide, vous venez de sauvez une partie de mon stage !!!
    Pièces jointes :
    decalage.jpg ‏42 KB

  • I have had my IPAD2 for quite a while but haven't activated my cellular data for about a year.  I am now trying to activate and when I go to cellular data, turn it on and try to tap view account i just get a message that says "connection to server lost".

    I have had my IPAD2 for quite a while but haven't activated my cellular data for about a year.  I am now trying to activate and when I go to cellular data, turn it on and try to tap view account i just get a message that says "connection to server lost".  I could swear the last time I used cellular data you would see the signal in the upper left corner and I only see "no service" there, I am in a location where I know I should have service.  Is there something I should do to my IPAD?  I tried resetting, I tried clearing cookies and history in Safari (after reading a post n these discussions).  I don't know what to do next. My IOS version is 6.1.3.  I did go into Network from the general tab and I see it says "SIM not provisioned".    HELP and Thank you in advance.

    Hello Theresa818,
    Thank you for using Apple Support Communities!
    It sounds like the cellular data will not activate for some reason on the iPad.
    I found this article that will help you resolve this issue here, named iPad (Wi-Fi + Cellular Models): Troubleshooting a cellular data connection, found here http://support.apple.com/kb/TS4249
    Check for a carrier settings update.
    Update your iPad.
    Toggle the Cellular Data setting off and on under Settings > Cellular Data.
    Restart your iPad.
    Tap Settings > General > About. Locate the Carrier entry and make sure that your carrier is correct.
    If your SIM card has SIM PIN enabled, try turning it off: Tap Settings > Cellular Data > SIM PIN.
    Make sure you're in an area of good coverage. If the cellular data connection works in another area, contact your carrier to report the original affected area.
    Reset network settings: Tap Settings > General > Reset > Reset Network Settings.
    Restore the iPad as new.
    If none of the above steps resolves the issue, make an appointment at an Apple Retail Store, contact your carrier, or contact AppleCare to troubleshoot further.
    I know you may have done one or two of the steps here, so you can skip those.
    Take care,
    Sterling

Maybe you are looking for

  • ExceltoCI to insert a new effdt row in JOB_DATA component

    Hi All, We are trying to use ExceltoCI to insert a new effdt row in JOB_DATA component. But it is not working when the BU is changing. I believe it is caused by we need to assign BU prior to other SETID enabled field like Department, locations, jobco

  • Oracle 9.0.1 on RH8.0

    hi all, i am having oracle 9.0.1 CDs for linux but i don't have runinstaller file in the cd. i have the following files on the ist CD Volume in drive E is Ora 9i DB-Linux1 Volume Serial Number is 47EC-7781 Directory of E:\ 01/25/2002 10:12p <DIR> Act

  • Could not open PDF Files with Safari using Lion - Solution

    Two for one solution: After installing Lion on my Macbook Pro, I could not open PDF files on line via Safari and iPhoto 11 kept crashing. Well, the solution for bothy problems was to remove the "3ivx" file.  The easiest way to do so is go to Applicat

  • HTMLDB 1.6 / doSubmit issue

    My original problem: I have numerous instances where I have a form region at the top of the page, and then a report at the bottom of the page. For instance, the top of the page might be header information, and the bottom of the page detail informatio

  • Photo resolution in iMovie

    I'm trying to make a presentation using 30 short video clips and several hundred photos. The video clips look great, however when I import the photos into iMovie, the resolution is terrible and extremely noticeably different than the same photos in i