Πίνακας περιεχομένων:

Ενδιαφέρουσες Οδηγίες Προγραμματισμού για Σχεδιαστής-Έλεγχος Διαδικασίας Προγράμματος-Δήλωση Βρόχου: 8 Βήματα
Ενδιαφέρουσες Οδηγίες Προγραμματισμού για Σχεδιαστής-Έλεγχος Διαδικασίας Προγράμματος-Δήλωση Βρόχου: 8 Βήματα

Βίντεο: Ενδιαφέρουσες Οδηγίες Προγραμματισμού για Σχεδιαστής-Έλεγχος Διαδικασίας Προγράμματος-Δήλωση Βρόχου: 8 Βήματα

Βίντεο: Ενδιαφέρουσες Οδηγίες Προγραμματισμού για Σχεδιαστής-Έλεγχος Διαδικασίας Προγράμματος-Δήλωση Βρόχου: 8 Βήματα
Βίντεο: Ask Me Anything with Gwen Wright Session #3 2024, Ιούλιος
Anonim
Ενδιαφέρουσες Οδηγίες Προγραμματισμού για Σχεδιαστής-Έλεγχος Διαδικασίας Προγράμματος-Δήλωση Βρόχου
Ενδιαφέρουσες Οδηγίες Προγραμματισμού για Σχεδιαστής-Έλεγχος Διαδικασίας Προγράμματος-Δήλωση Βρόχου

Έλεγχος διαδικασίας προγράμματος- Δήλωση βρόχου

Από αυτό το κεφάλαιο, θα έρθετε σε επαφή με μια σημαντική και ισχυρή δήλωση σημείου βρόχου.

Πριν διαβάσετε αυτό το κεφάλαιο, αν θέλετε να σχεδιάσετε 10.000 κύκλους στο πρόγραμμα, μπορείτε να το κάνετε μόνο με μια φοβερή μέθοδο. Δηλαδή να γράψουμε 10.000 γραμμές ελλειπτικού κώδικα. Αυτοί οι τεμπέληδες σχεδιαστές κώδικα που θέλουν να βελτιώσουν την αποτελεσματικότητα με κάθε τρόπο, σίγουρα δεν θα επέτρεπαν να συμβεί αυτό. Έτσι, δημιουργείται μια δήλωση βρόχου. Με αυτήν τη δήλωση, μπορείτε διαισθητικά να αισθανθείτε τη δύναμη του αυτοματισμού του υπολογιστή.

Βήμα 1: Για βρόχο

Υπάρχουν πολλές δηλώσεις βρόχου, μεταξύ των οποίων η πιο ευρέως χρησιμοποιούμενη είναι για το βρόχο. Όλοι γνωρίζουμε ότι η έλξη συναρτήσεων λειτουργεί συνεχώς σε κυκλοφορία. Ξεκινήστε από την πρώτη πρόταση στην αρχή, θα εφαρμοστεί από πάνω προς τα κάτω μέχρι την τελευταία πρόταση. Αφού τελειώσει μια λειτουργία, θα ξεκινήσει ξανά από την πρώτη πρόταση. Η δήλωση είναι λίγο παρόμοια με τη συνάρτηση draw. Ο κώδικας για τη δήλωση μπορεί να εκτελεστεί επανειλημμένα.

Εδώ είναι η γραμματική δομή του:

Για (έκφραση 1; έκφραση 2; έκφραση 3) {

Σώμα βρόχου

}

Προφανώς, οι προτάσεις εντός του βρόχου είναι αυτό που περιμέναμε να εφαρμοστεί επανειλημμένα. Η έκφραση 1 χρησιμοποιείται για την εκκίνηση και εκχώρηση της πρώτης τιμής στη μεταβλητή βρόχου. Η έκφραση 2 είναι για κατάσταση βρόχου. Η έκφραση 3 θα ενημερώσει την τιμή της μεταβλητής βρόχου.

Τι είναι η μεταβλητή βρόχου; Είναι στην πραγματικότητα ισοδύναμη με μια τοπική μεταβλητή. Ας ρίξουμε μια ματιά σε μια πλήρη γραφή.

για (int i = 0; i <10; i ++) {

Σώμα βρόχου

}

Για να πραγματοποιηθεί η συνάρτηση βρόχου, η δήλωση βασίζεται κυρίως σε μια τοπική μεταβλητή, η οποία θα χρησιμοποιηθεί στο τερματισμό του βρόχου. Η τοπική μεταβλητή στο παραπάνω παράδειγμα είναι i. Η έκφραση 1 ολοκλήρωσε την αρχικοποίηση της τοπικής μεταβλητής. Αργότερα, κάθε φορά που ο βρόχος λειτουργεί για μία φορά, αυτή η μεταβλητή πρέπει να ενημερώνεται. Μεταξύ του παραπάνω παραδείγματος, το i ++ στην έκφραση 3 χρησιμοποιείται για την πραγματοποίηση της λειτουργίας ενημέρωσης. Μέσω αυτού, η μεταβλητή θα αυξάνεται 1 κάθε φορά που ενημερώνεται. Στο τέλος, ο κώδικας μέσα στο σώμα του βρόχου δεν μπορεί να κάνει βρόχο επ 'αόριστον, ενώ οι τελευταίες δηλώσεις δεν μπορούν να εκτελεστούν. Έτσι, χρειαζόμαστε μια τελική συνθήκη. Το Express 2 είναι μόνο για αυτό. Εδώ, το πρόγραμμα θα κρίνει αν το i είναι μικρότερο από 10. Αν είναι, τότε συνεχίστε τη λειτουργία. Εάν δεν είναι, τότε πηδήξτε έξω από το βρόχο.

Επομένως, η ακολουθία λειτουργίας του για δήλωση είναι ακριβώς έτσι.

Έκφραση 1 (Αρχικοποίηση τοπικής μεταβλητής)

Έκφραση 2 (Ικανοποιημένη, μετά συνεχίστε να λειτουργείτε)

Σώμα βρόχου (Πρώτη κυκλοφορία)

Έκφραση 3 (Ενημέρωση)

Έκφραση 2 (Ικανοποιημένη, μετά συνεχίστε να λειτουργείτε)

Σώμα βρόχου (Δεύτερος κύκλος)

Έκφραση 3 (Ενημέρωση)

Έκφραση 2 (Ικανοποιημένη, μετά συνεχίστε να λειτουργείτε)

Σώμα βρόχου (Τρίτη κυκλοφορία)…

Έκφραση 3 (Ενημέρωση)

Έκφραση 2 (Δεν είμαι ικανοποιημένος, μετά πηδήξτε έξω από το βρόχο)

Μπορείτε να προσομοιώσετε αυτήν την ακολουθία εκτέλεσης στο κεφάλι σας για αρκετές φορές. Αλλά είναι αδύνατο να καταλάβετε πραγματικά τον κώδικα χωρίς να τον πληκτρολογήσετε για μια φορά. Όταν θέλουμε να βρούμε μια περίεργη έννοια, μπορούμε να εκτυπώσουμε την τιμή στην κονσόλα μέσω της δήλωσης println.

Παράδειγμα κώδικα (5-1): void setup () {

για (int i = 0; i <10; i ++) {

println ("τρέξιμο");

}

}

Μπορείτε να μετρήσετε τον αριθμό εξόδου εκτέλεσης στην κονσόλα. Εδώ, είναι ακριβώς 10. Αυτό σας λέει πόσες φορές έχει εκτελεστεί ο κώδικας στο σώμα του βρόχου. Ωστόσο, ακόμα δεν μπορούμε να ανιχνεύσουμε ποιες αλλαγές έχουν συμβεί πραγματικά στον βρόχο. Μπορούμε λοιπόν να προσπαθήσουμε να αλλάξουμε χαρακτήρα "τρέχοντας σε μεταβλητή" i "και να δούμε τι θα συμβεί.

Παράδειγμα κώδικα (5-2): void setup () {

για (int i = 0; i <10; i ++) {

println (i);

}

}

Τώρα, μπορούμε να δούμε ότι η τιμή i στο σώμα του βρόχου αυξάνεται συνεχώς. Αργότερα, μπορούμε να χρησιμοποιήσουμε αυτήν την τιμή για να κατανοήσουμε την τρέχουσα διαδικασία του βρόχου.

Στο παράδειγμα κώδικα (5-2), η τιμή i αλλάζει από 0 σε 9. Σε σύγκριση με τους πραγματικούς χρόνους βρόχου, φαίνεται ότι έχει πάντα 1 λιγότερο. Εάν δεν το έχετε συνηθίσει, η έκφραση στην παρένθεση του για την εντολή μπορεί να γραφτεί στα ακόλουθα:

για (int i = 1; i <= 10; i ++)

Έτσι, αντιστοιχίζω σωστά σε χρόνους βρόχου. Η έννοια του "<=" είναι μικρότερη και ίση με. Έτσι, όταν ισούμαι με 10, θα εξακολουθεί να πληροί την προϋπόθεση. Ως εκ τούτου, θα λειτουργήσει για άλλη μια φορά σε σύγκριση με την εγγραφή στο i <10. Παρόλο που ξεκινά από το 1, οι χρόνοι βρόχου εξακολουθούν να είναι 10. Φυσικά, αν δεν χρειάζεται κάτι ιδιαίτερο, θα ήθελα να σας προτείνω να υιοθετήσετε τη μέθοδο γραφής στο παράδειγμα στην αρχή. Αργότερα θα σας παρουσιάσουμε το διάνυσμα ή τον πίνακα, και τα δύο αποκτούν το στοιχείο του με την υπογραφή του. Και οι προεπιλεγμένες εγγραφές ξεκινούν όλες από το 0. Ο ορισμός της αρχικής τιμής στο 0 είναι η συγκριτικά κοινή πρακτική.

Στο παραπάνω παράδειγμα, αν γράψουμε i είναι πέρα από το 0, το pogram θα καταρρεύσει. Επειδή η μεταβλητή αυξάνεται σταθερά, δεν θα ικανοποιήσει ποτέ αυτήν την προϋπόθεση. Αυτό είναι ακριβώς όπως δεν μπορεί ποτέ να σταματήσει έτσι ώστε το πρόγραμμα να τρέξει σε ατελείωτο βρόχο.

Οι τοπικές μεταβλητές στη δήλωση for μπορούν όχι μόνο να δηλώνουν πλαστικούς τύπους, αλλά και να δηλώνουν μεταβλητές σε τύπους κυμαινόμενου σημείου. Για παράδειγμα, μπορεί να γραφτεί ως (float i = 0; i <10; i + = 0.02).

Βήμα 2: Χρησιμοποιήστε το Loop για την επίλυση μαθηματικών προβλημάτων

Θυμάστε ακόμα μια ιστορία μαθηματικού Γκάους στα παιδικά του χρόνια; Εκείνη την εποχή, ο Guass ήταν 10 ετών. Ο δάσκαλός του ήθελε να αναθέσει μια εργασία στην τάξη και η ερώτηση ήταν

1+2+3+4……+97+98+99+100=?

Αν υπολογίσετε με τα χέρια σας, θα σας πάρει πολύ χρόνο. Αλλά ο Guass φαίνεται να έχει ήδη καταλάβει τη μέθοδο αθροίσματος της αριθμητικής ακολουθίας. Έτσι, αμέσως μόλις δοθεί η ερώτηση, είπε την απάντηση με ευκολία, η οποία είχε εκπλήξει πολύ τον δάσκαλό του.

Τώρα, μπορεί να μην θυμόμαστε ακόμα ποιο είναι το άθροισμα της αριθμητικής ακολουθίας, αλλά μπορούμε να πάρουμε την απάντηση με έναν πρωτόγονο και βίαιο τρόπο. Και αυτό είναι για βρόχο. Δεδομένου ότι είναι μόνο ένα μικρό κομμάτι κέικ για υπολογιστές, πρέπει να περιγράψουμε την ερώτηση σε μια γλώσσα που μπορεί να αναγνωριστεί από τον υπολογιστή, τότε μπορούμε εύκολα να πάρουμε την απάντησή μας.

Παράδειγμα κώδικα (5-3):

void setup () {

int απάντηση = 0;

για (int i = 1; i <= 100; i ++) {

απάντηση += i;

}

println (απάντηση);

}

Πιστεύω ότι το αποτέλεσμα που παίρνετε είναι ίδιο με την απάντηση που ανέφερε ο Guass: είναι 5050!

Συμβουλές: Το όνομα των τοπικών μεταβλητών in for loop μπορεί να αλλάξει κατά βούληση, υπό την προϋπόθεση ότι τηρεί τους κανονισμούς ονομασίας μεταβλητών. Μπορείτε να το γράψετε ως (int k = 1; k <= 100; k ++). Εάν δεν συνέβησαν συγκεκριμένες συνθήκες, προεπιλογή i ως όνομα της μεταβλητής.

Βήμα 3: Για σχέδιο βρόχου

Μετά από μια σειρά φαινομενικά βαρετών κλινοσκεπασμάτων, επιτέλους μπορούμε να έρθουμε σε μια πιο ενδιαφέρουσα ενότητα. Δηλαδή, για βρόχο για να σχεδιάσετε εικόνες. Μπορούμε να παραμερίσουμε τώρα αυτούς τους κουραστικούς μαθηματικούς υπολογισμούς. Εμείς οι σχεδιαστές είμαστε πιο ευαίσθητοι στα γραφικά.

Χρησιμοποιήστε για βρόχο για να σχεδιάσετε έναν πίνακα κύκλων

Όταν θέλουμε να χρησιμοποιήσουμε το βρόχο για να αντιπροσωπεύσουμε μια ομάδα επαναλαμβανόμενων στοιχείων, πρέπει να διασφαλίσουμε την αριθμητική σχέση αυτών των στοιχείων εκ των προτέρων, τότε μπορούμε να χρησιμοποιήσουμε το βρόχο για να το πραγματοποιήσουμε εύκολα αντί να κάνουμε μαζικές επαναλαμβανόμενες εργασίες. Ας υποθέσουμε ότι αν θέλουμε να σχεδιάσουμε μια σειρά κύκλου ισοσκελισμένη σε οριζόντια κατεύθυνση. Η ουσιαστική συντεταγμένη του είναι αμετάβλητη ενώ η οριζόντια συντεταγμένη του αλλάζει. Και από τα αριστερά προς τα δεξιά, η οριζόντια συντεταγμένη αυξάνεται συνεχώς και η αυξανόμενη απόσταση είναι η ίδια. Αυτή τη στιγμή, μπορούμε να χρησιμοποιήσουμε τον βρόχο i in για να πάρουμε την οριζόντια συντεταγμένη κάθε κύκλου.

Παράδειγμα κώδικα (5-4): void setup () {

μέγεθος (700, 700);

φόντο (83, 51, 194).

noStroke ();

}

άκυρη κλήρωση () {

για (int i = 0; i <7; i ++) {

έλλειψη (50,0 + i * 100,0, ύψος/2,0, 80,0, 80,0);

}

}

50 αντιπροσωπεύει τη θέση εκκίνησης του πρώτου κύκλου στα αριστερά. 100 σε i * 100 αντιπροσωπεύει την αυξανόμενη απόσταση.

Βήμα 4: Χρησιμοποιήστε το Loop για να σχεδιάσετε ένα τυχαίο στρογγυλό σημείο

Η παραπάνω γραφική θέση είναι προβλέψιμη. Αυτό θα ελαχιστοποιήσει το μεγάλο ενδιαφέρον. Μπορούμε να χρησιμοποιήσουμε την τυχαία συνάρτηση που αναφέραμε στο προηγούμενο κεφάλαιο και να προσπαθήσουμε να τη γράψουμε στη συνάρτηση σχεδίασης.

Παράδειγμα κώδικα (5-5):

void setup () {

μέγεθος (700, 700);

φόντο (0);

noStroke ();

}

άκυρη κλήρωση () {

φόντο (0);

για (int i = 0; i <10; i ++) {

float randomWidth = τυχαίο (60,0);

έλλειψη (τυχαία (πλάτος), τυχαία (ύψος), randomWidth, randomWidth);

}

}

Εδώ, ο λόγος για τον οποίο η θέση του κύκλου αναβοσβήνει συνεχώς είναι επειδή κάθε φορά που η συνάρτηση λειτουργεί τυχαία για μία φορά, το αποτέλεσμα είναι τυχαίο. Επειδή η λειτουργία κλήρωσης είναι προεπιλεγμένη να εκτελεί 60 καρέ ανά δευτερόλεπτο, έτσι κάθε 10 κύκλοι που σχεδιάζονται σε ένα δευτερόλεπτο θα αλλάζουν τη θέση της για 60 φορές. Αυτό το γρήγορο φλας κάνει την εικόνα να έχει περισσότερους από 10 κύκλους. Η αλλαγή μιας απλής τιμής στο πρόγραμμα θα σας φέρει ένα εντελώς διαφορετικό αποτέλεσμα. Μπορούμε να αλλάξουμε τους χρόνους βρόχου αναθεωρώντας την κατάσταση τερματικού. Η τελική κατάσταση στην παρακάτω εικόνα είναι i <100

  1. Εδώ είναι το αποτέλεσμα όταν η κατάσταση τερματικού είναι i <1000:
  2. RandomSeed
  3. Εάν δεν θέλω να δημιουργηθεί τυχαία η θέση του κύκλου καθώς και το φλας του, τι μπορώ να κάνω; Μια μέθοδος είναι η δημιουργία και η αποθήκευση ανεξάρτητων μεταβλητών για κάθε κύκλο και η προετοιμασία αυτών των μεταβλητών κατά τη ρύθμιση. Εκχωρήστε αυτές τις μεταβλητές μια τυχαία τιμή. Έτσι, όταν χρησιμοποιούμε τη συνάρτηση σχεδίασης εντός κλήρωσης, αυτό που επικαλεστήκαμε είναι η τιμή που είναι αποθηκευμένη σε μεταβλητές. Δεν θα αλλάξει ανά πάσα στιγμή. Για να σχεδιάσουμε 10 κύκλους μπορούμε απλά να χρησιμοποιήσουμε αυτήν τη μέθοδο. Τι γίνεται όμως αν θέλουμε να σχεδιάσουμε 1000 κύκλους ή 10.000 κύκλους; Θα είναι αρκετά ενοχλητικό αν χρησιμοποιήσουμε αυτήν την παραδοσιακή μέθοδο για να δημιουργήσουμε αυτές τις μεταβλητές και να τις ονομάσουμε. Δεν χρειάζεται να μάθουμε μια νέα μέθοδο κατασκευής μεταβλητών. Εδώ είναι μια ευέλικτη μέθοδος που μπορεί να μας βοηθήσει να επιτύχουμε αυτόν τον στόχο. Δηλαδή η χρήση του randomSeed. Τώρα, ας ρίξουμε μια ματιά στο αποτέλεσμα του μετά τη χρήση. Παράδειγμα κώδικα (5-6): [cceN_cpp theme = "dawn"] void setup () {size (700, 700); φόντο (0); noStroke ();}
  4. άκυρη κλήρωση () {

    φόντο (0);

    randomSeed (1);

    για (int i = 0; i <10; i ++) {

    float randomWidth = random (20.0, 60.0);

    έλλειψη (τυχαία (πλάτος), τυχαία (ύψος), randomWidth, randomWidth);

    }

    } [/cceN_cpp]

    Σε σύγκριση με τον προηγούμενο κώδικα, δεν έχει καμία αλλαγή εκτός από το να αλλάξει το εύρος της ακτίνας του κύκλου από 10 σε πάνω από 30 με μια πρόταση μόνο τουSeedRandom. Αφού προστεθεί αυτή η πρόταση, το γραφικό φαίνεται στατικό.

    Μορφή πρόσκλησης:

    randomSeed (a);

    Μεταξύ αυτής της μορφής, η ρύθμιση του a είναι σπόρος. Πρέπει να συμπληρώσετε έναν ακέραιο αριθμό (γράψτε τιμή επιπλεόντος σημείου στο P5, δεν θα πάει στραβά αλλά θα το αντιμετωπίσετε ως ακέραιος αριθμός) σε αυτό. Η λειτουργία του randomSeed είναι να ορίσει τον σπόρο για τυχαία τιμή. Στη συνέχεια, θα δημιουργήσει διαφορετικό τυχαίο πίνακα ανάλογα με τον διαφορετικό σπόρο. Μετά από αυτό, επικαλούμαστε τη συνάρτηση τυχαία, έτσι ώστε το αποτέλεσμα της επιστροφής να είναι οριστικό. Εδώ, το οριστικό δεν είναι για το αποτέλεσμα είναι μια ορισμένη τιμή, αλλά για τον δημιουργούμενο πίνακα. Δηλαδή το αποτέλεσμα της επιστροφής είναι οριστικό σε σχέση με τους χρόνους κλήσης.

    Παράδειγμα κώδικα (5-7): [cceN_cpp theme = "dawn"] void setup () {

    randomSeed (0);

    για (int i = 0; i <5; i ++) {

    println (τυχαία (10));

    }

    } [/cceN_cpp]

    Τώρα συνεχίζουμε να χρησιμοποιούμε το println για να κάνουμε ένα πείραμα. Μετά τη χρήση του randomSeed, κάθε φορά που κλείνετε το πρόγραμμα και κάνετε επανεκκίνηση του προγράμματος, θα επιστρέφει σε μια συμβολοσειρά του ίδιου αποτελέσματος. Η τιμή θα αντιστοιχεί στην ακολουθία μία προς μία. Εάν το διαγράψετε, τότε κάθε φορά θα επιστρέφει σε διαφορετική τιμή. Γιατί έχει αυτή τη ρύθμιση; Είναι επειδή η ίδια η τυχαία τιμή στο πρόγραμμα είναι ψευδοτυχαία. Το αποτέλεσμα φαίνεται τυχαίο αλλά στην πραγματικότητα παράγεται με μια σταθερή και επαναλαμβανόμενη μέθοδο υπολογισμού. Είναι ισοδύναμο να ορίσετε μια πρωτόγονη τιμή για το randomSeed, τότε το ακόλουθο αποτέλεσμα θα υπολογιστεί σύμφωνα με αυτόν τον σπόρο. Ωστόσο, εάν δεν ορίσουμε τον σπόρο, το πρόγραμμα θα προεπιλέξει να χρησιμοποιήσει τον τρέχοντα χρόνο του συστήματος για τη δημιουργία σπόρων. Επομένως, το αποτέλεσμα κάθε λειτουργίας είναι διαφορετικό. Το παρακάτω παράδειγμα μπορεί να σας βοηθήσει να κατανοήσετε καλύτερα το randomSeed.

    Παράδειγμα κώδικα (5-8): [cceN_cpp theme = "dawn"] void setup () {

    μέγεθος (700, 700);

    φόντο (0);

    noStroke ();

    }

    άκυρη κλήρωση () {

    randomSeed (1);

    για (int i = 0; i <10; i ++) {

    float randomWidth01 = τυχαίο (10, 60);

    έλλειψη (τυχαία (πλάτος), τυχαία (ύψος), randomWidth01, randomWidth01);

    println (randomWidth01);

    }

    randomSeed (1);

    για (int i = 0; i <10; i ++) {

    float randomWidth02 = τυχαίο (10, 60);

    έλλειψη (τυχαία (πλάτος), τυχαία (ύψος), randomWidth02, randomWidth02);

    println (randomWidth02);

    }

    } [/cceN_cpp]

    Προσπαθήστε να αναθεωρήσετε το δεύτερο randomSeed (1) σε randomSeed (0) και να συγκρίνετε τα τελικά αποτελέσματα.

    Συμβουλές: Στο P5, πρέπει μόνο να καλέσουμε τη συνάρτηση noLoop στο τέλος της κλήρωσης, ώστε να έχουμε το ίδιο αποτέλεσμα. Η λειτουργία του είναι να τερματίσει το πρόγραμμα. Είναι πολύ διαφορετικό από τις παραπάνω αρχές λειτουργίας στη φύση.

Βήμα 5: Χρησιμοποιήστε το για Loop to Draw Line

Αφού έχουμε κατακτήσει τη χρήση του randomSeed, μπορούμε να προσπαθήσουμε να αλλάξουμε τη λειτουργία σχεδίασης. Για παράδειγμα, αλλάξτε το σχέδιο κύκλου σε σχέδιο γραμμής. Μόνο αν σχεδιάσουμε κάποιους μεταβαλλόμενους κανονισμούς μέχρι το τέλος της γραμμής, μπορούμε να χρησιμοποιήσουμε πολλές γραμμές διαπλεκόμενες για να δημιουργήσουμε ένα μοναδικό μοτίβο.

Παράδειγμα κώδικα (5-9):

[cceN_cpp theme = "dawn"] void setup () {

μέγεθος (700, 700).

φόντο (0);

}

άκυρη κλήρωση () {

randomSeed (0);

για (int i = 0; i <2000; i ++) {

float x1 = πλάτος/2.0;

float x2 = τυχαίο (50,0, 650,0);

εγκεφαλικό επεισόδιο (255, 20).

γραμμή (x1, 50, x2, 650);

}

} [/cceN_cpp]

Δημιουργήστε απλό πινέλο

Επιστρέψτε ξανά για βρόχο για. Τα παραπάνω παραδείγματα δεν είναι διαδραστικά. Αν θέλουμε το αποτέλεσμα να γίνει πιο ενδιαφέρον, δεν μπορούμε να ξεχάσουμε να συνδυάσουμε το mouseX και το mouseY στον κώδικά μας.

Παράδειγμα κώδικα (5-10):

[cceN_cpp theme = "dawn"] void setup () {

μέγεθος (700, 700);

φόντο (255);

noStroke ();

}

άκυρη κλήρωση () {

για (int i = 0; i <1000; i ++) {

γέμισμα (0, 30);

float x = mouseX + τυχαία (-50, 50);

float y = mouseY + τυχαία (-50, 50);

έλλειψη (x, y, 2, 2);

}

} [/cceN_cpp]

Δημιουργείται μια βούρτσα "σημεία σκέδασης". Επειδή κάθε εντατικό μίνι στρογγυλό σημείο βασίζεται στη θέση του ποντικιού, μπορεί να μετακινήσει περιορισμένες κατευθύνσεις από τις τέσσερις κατευθύνσεις αριστερά, δεξιά, πάνω και κάτω. Έτσι, το τελικό σχήμα της βούρτσας είναι παρόμοιο με ένα τετράγωνο.

Παράδειγμα κώδικα (5-11):

[cceN_cpp theme = "dawn"] void setup () {

μέγεθος (700, 700);

φόντο (255);

noStroke ();

}

άκυρη κλήρωση () {

για (int i = 0; i <1000; i ++) {

float ratio = mouseX/(float) πλάτος?

float x = mouseX + τυχαία (-50, 50);

float y = mouseY + τυχαία (-50, 50);

πλήρωση (0, λόγος * 255, 255 * (1 - λόγος), 30);

έλλειψη (x, y, 2, 2);

}

}

[/cceN_cpp]

Εάν χρησιμοποιήσουμε την τιμή του mouseX για να επηρεάσουμε το χρώμα πλήρωσης, τότε θα έχουμε μια πολύ πιο μαγική κλίση χρώματος.

Βήμα 6: Για Loop Nested

Για βρόχο μπορεί να τοποθετηθεί. Μπορείτε να γράψετε ξανά έναν βρόχο for στον βρόχο for. Όταν πρέπει να σχεδιάσετε ένα πίνακα δύο διαστάσεων, μπορείτε να επιλέξετε αυτήν τη μέθοδο.

Παράδειγμα κώδικα (5-12):

[cceN_cpp theme = "dawn"] void setup () {

μέγεθος (700, 700, P2D).

φόντο (202, 240, 107);

}

άκυρη κλήρωση () {

συμπληρώστε (0)?

για (int i = 0; i <5; i ++) {

για (int j = 0; j <5; j ++) {

float x = 150 + i * 100;

float y = 150 + j * 100;

έλλειψη (x, y, 60, 60);

println (i + ":" + j);

}

}

}

[/cceN_cpp]

Για να χρησιμοποιήσετε τον ένθετο βρόχο για πρώτη φορά, πρέπει να καταλάβετε τις λογικές σχέσεις του. Η εφαρμογή κώδικα στο πρόγραμμα είναι πάντα από πάνω προς τα κάτω. Επομένως, το πρώτο που εφαρμόστηκε είναι σίγουρα ο πιο μακρινός βρόχος. Κάθε φορά που ο εξωτερικός βρόχος λειτουργεί για μία φορά, ο εσωτερικός βρόχος θα λειτουργεί συνεχώς έως ότου δεν μπορεί να ικανοποιήσει πλέον την κατάσταση. Μετά από αυτό, θα ξεκινήσει η δεύτερη λειτουργία εξωτερικού βρόχου. Μετά την έναρξη της δεύτερης λειτουργίας, ο εσωτερικός βρόχος θα συνεχίσει να εφαρμόζεται έως ότου δεν μπορεί να ικανοποιήσει την προϋπόθεση. Μια τέτοια επανάληψη γίνεται έως ότου δεν μπορούν να ικανοποιηθούν όλες οι συνθήκες και πετάξει έξω από το βρόχο.

Στον παραπάνω κώδικα, το σώμα του βρόχου στον εξωτερικό βρόχο έχει λειτουργήσει 5 φορές συνολικά, ενώ το σώμα του βρόχου στον εσωτερικό βρόχο έχει λειτουργήσει 25 φορές. Μέσα σε 25 φορές, σύμφωνα με τη διαφορά της τιμής i, j, μπορούμε να διασφαλίσουμε την οριζόντια και κάθετη συντεταγμένη του κύκλου ξεχωριστά. Έχω ενσωματώσει ένα τμήμα εκτύπωσης, μπορείτε να παρατηρήσετε την έξοδο δεδομένων και να σκεφτείτε την αλλαγή του. Μόνο με δύο ένθετους βρόχους, μπορούμε να βιώσουμε όλους τους συνδυασμούς δεδομένων i, j.

Συμβουλές

Για βρόχο στο δεύτερο στρώμα συνήθως συμπυκνώνεται με το Tab στην αρχή. Αυτό μπορεί να κάνει τη δομή του κώδικα πιο σαφή. Πρέπει να ονομάσετε τοπικές μεταβλητές στα δύο επίπεδα του βρόχου for με διαφορετικά ονόματα. Μεταξύ αυτών, το "i", "j", "k" είναι το πιο συχνά χρησιμοποιούμενο.

Ευέλικτη χρήση "i", "j"

Το όνομα δύο μεταβλητών του "i", "j" αντιπροσωπεύει τοπικές μεταβλητές των δύο στρωμάτων του βρόχου for. Το παρακάτω παράδειγμα θα εμβαθύνει την κατανόησή σας για το "i" "j". Σύμφωνα με τη διαφορετική τιμή των "i", "j", μπορούμε να εισάγουμε παραμέτρους για να ομαδοποιήσουμε τα στοιχεία.

Παράδειγμα κώδικα (5-13): [cceN_cpp theme = "dawn"] void setup () {

μέγεθος (700, 700);

φόντο (0);

noStroke ();

}

άκυρη κλήρωση () {

φόντο (0);

γέμισμα (250, 233, 77).

για (int i = 0; i <7; i ++) {

για (int j = 0; j <7; j ++) {

pushMatrix ();

μετάφραση (50 + i * 100, 50 + j * 100).

// Ρύθμιση 1

// float angle = sin (millis ()/1000.0) * PI/2;

// Ρύθμιση 2

// λόγος επίπλευσης = i/7.0;

// float angle = sin (millis ()/1000.0 + ratio * (PI/2)) * PI/2;

// Ρύθμιση 3

λόγος επίπλευσης = (i * 7 + j) /49.0;

float angle = sin (millis ()/1000.0 + λόγος * (PI/2)) * PI/2;

περιστροφή (γωνία)?

rectMode (ΚΕΝΤΡΟ);

// Σχεδιάστε την εικόνα 1

rect (0, 0, 80, 80);

// Σχεδιάστε εικόνα 2

// rect (0, 0, 100, 20);

// Σχεδιάστε την εικόνα 3

// rect (0, 0, λόγος * 50);

popMatrix ();

}

}

} [/cceN_cpp]

Επεξήγηση κώδικα

Το rectMode (CENTER) μπορεί να αλλάξει τη μέθοδο σχεδίασης του τετραγώνου. Οι πρώτες δύο πρώτες παράμετροι του rect χρησιμοποιούνται για τον καθορισμό της συντεταγμένης της αριστερής επάνω γωνίας του sqaure. Αφού ξεκινήσουμε αυτήν την εντολή, αυτές οι δύο παράμετροι θα χρησιμοποιηθούν για τον καθορισμό της συντεταγμένης για το τετράγωνο κεντρικό σημείο. Επειδή εδώ λειτουργούμε την περιστροφή του πατέρα μέσω περιστροφής, οπότε πρέπει να χρησιμοποιήσουμε αυτήν τη μέθοδο για να τραβήξουμε το κεντρικό σημείο στο αρχικό σημείο της συντεταγμένης.

millis () αποκτά το χρόνο από την έναρξη του προγράμματος έως σήμερα. Η μονάδα είναι ms. Αυτή η τιμή θα επηρεάσει την μεταβαλλόμενη ταχύτητα της τιμής εξόδου sin. Αν γράψουμε άμεσα millis, η μεταβαλλόμενη κλίμακα είναι πολύ μεγάλη. Έτσι, πρέπει να το διαιρέσουμε με 1000.0.

Σε αυτήν την ενότητα κώδικα, χρησιμοποιούμε το σύμβολο σχολίου "//" για να αποκρύψουμε αρκετές ρυθμίσεις. Μπορείτε να αλλάξετε εφέ κατά την έναρξη ή το κλείσιμο. Για παράδειγμα, αν ξεκινήσουμε προτάσεις πίσω από το "Ρύθμιση 3", πρέπει να χρησιμοποιήσουμε το σύμβολο σχολίου για να κλείσουμε μπλοκ κώδικα "Ρύθμιση 1" και "Ρύθμιση 2". Όσον αφορά τα παραδείγματα αυτής της παρόμοιας δομής προγράμματος με διαφορετικές τοπικές μεταβλητές, μπορούμε να γράψουμε σε αυτήν τη μορφή. Επομένως, δεν χρειάζεται να αποθηκεύουμε διάφορα έγγραφα μηχανικής ξεχωριστά. Μπορούμε να χρησιμοποιήσουμε αυτήν την ικανότητα συχνά κατά τη διάρκεια της άσκησης και της δημιουργίας και να διατηρήσουμε ορισμένες ικανοποιητικές ρυθμίσεις παραμέτρων.

Μεταξύ αυτών, η επίδραση της τιμής i, j στο πρόγραμμα αντιπροσωπεύεται κυρίως με τη μετατόπιση "Ρύθμιση 1 (Ρύθμιση 2) (Ρύθμιση 3)". Μπορείτε να συγκρίνετε τα αποτελέσματα εξόδου παρακάτω.

Σχεδιάστε την εικόνα 1: Ρύθμιση 1

Σχεδιάστε την εικόνα 1: Ρύθμιση 2

Σχεδιάστε την εικόνα 1: Ρύθμιση 3

Σχεδιάστε την εικόνα 2: Ρύθμιση 1

Σχεδιάστε την εικόνα 2: Ρύθμιση 2

Σχεδιάστε την εικόνα 2: Ρύθμιση 3

Στη ρύθμιση 1, δεν χρησιμοποιήσαμε τα i και j για να επηρεάσουμε τη γωνία περιστροφής κάθε στοιχείου. Έτσι μπορούμε να δούμε ότι η κίνηση κάθε στοιχείου είναι η ίδια. Ενώ στη ρύθμιση 2, έχουμε χρησιμοποιήσει την τιμή i και τόσο i και j στη ρύθμιση 3. Τέλος, έχουν επηρεάσει την εισαγωγή παραμέτρων της συνάρτησης sin μέσω αναλογίας. Αυτό έχει αλλάξει την περιοδική αλλαγή γωνίας. Λόγω της πραγματικής επίδρασης της ρύθμισης 2 και της ρύθμισης 3 δεν είναι τόσο εμφανής στα κινούμενα γραφικά, μπορούμε να το παρατηρήσουμε από το παρακάτω στιγμιότυπο οθόνης.

Σχεδιάστε εικόνα 2 (Αριστερά: Ρύθμιση 2; Δεξιά: Ρύθμιση 3)

Σχεδιάστε την εικόνα 3 (Αριστερά: Ρύθμιση 2; Δεξιά: Ρύθμιση 3)

Στην πρώτη εικόνα, ο λόγος χρησιμοποιείται για να επηρεάσει τη γωνία περιστροφής τετραγώνου. Ενώ η δεύτερη εικόνα, πρέπει να ελέγχει την ακτίνα του κύκλου άμεσα. Μπορούμε να δούμε ότι έχει χρησιμοποιήσει την πρόταση i value:

λόγος επίπλευσης = i/7.0;

Η αλλαγή του κατακόρυφου στοιχείου είναι συνεπής. Επειδή η οριζόντια συντεταγμένη για τον έλεγχο της εικόνας εξαρτάται μόνο από την τιμή του i, έτσι τα patterms με την ίδια οριζόντια συντεταγμένη θα είναι τα ίδια. Και η τιμή του λόγου, της γωνίας περιστροφής και της ακτίνας του κύκλου είναι επίσης η ίδια.

Ταυτόχρονα, χρησιμοποιούμε πρόταση i, j:

λόγος επίπλευσης = (i * 7 + j) /49.0;

Μπορεί να περιγράψει "κλίση". Εδώ, με τη μέθοδο του πολλαπλασιασμού ενός συντελεστή, έχει συνδυάσει την επίδραση των γραμμών και των στηλών. Κάθε στοιχείο λοιπόν είναι διαφορετικό.

Βήμα 7: Ενώ βρόχος

Υπάρχει ένας αδελφός for for loop. Αυτό είναι ενώ ο βρόχος. Αυτό που μπορεί να κάνει ο βρόχος, ενώ το κάνει και ο βρόχος. Αλλά η συχνότητα χρήσης του βρόχου while στο creativeCoding δεν είναι υψηλή σε σχέση με τον βρόχο.

Παράδειγμα κώδικα (5-14): [cceN_cpp theme = "dawn"] void setup () {

int a = 0;

ενώ (α <10) {

println (a);

α ++?

}

} [/cceN_cpp]

Η γραμματική δομή του while είναι ευκολότερο να κατανοηθεί παρά για. Μπορούμε να δημιουργήσουμε μεταβλητές πριν από την εντολή while. Στη συνέχεια, συμπληρώστε μια παράσταση εντός αγκύλης. Όταν ικανοποιηθεί, τότε χρησιμοποιήστε τις προτάσεις μέσα στο σώμα του βρόχου. Τέλος, βάζουμε μια έκφραση στο σώμα του βρόχου για να ενημερώσουμε τις μεταβλητές, και ενώ ο βρόχος τελειώσει. Όσο για τους εξασφαλισμένους χρόνους βρόχου, χρησιμοποιούμε συχνά για βρόχο. Όσον αφορά την αόριστη τιμή μεταβλητής, σας συνιστούμε να χρησιμοποιήσετε το βρόχο while.

Νομίζω:

Προσπαθήστε να χρησιμοποιήσετε όλα τα είδη βασικών στοιχείων για να αντικαταστήσετε τα στοιχεία σχεδίασης για το βρόχο για να δημιουργήσετε διάφορες διαφορετικές βούρτσες.

Συνδυάστε με την τριγωνομετρική συνάρτηση που αναφέρεται στο τελευταίο κεφάλαιο, προσπαθήστε να αναθεωρήσετε τη βούρτσα "σημεία σκέδασης" σε πινέλο στρογγυλού σχήματος.

Προσπαθήστε να φτιάξετε έναν πίνακα δύο διαστάσεων με βρόχο for μόνο.

Επόμενο Κεφάλαιο Προεπισκόπηση Όπως με αυτό το μάθημα, θα βρείτε κάθε νέα γνώση που θα μάθετε, η δυνατότητα παιχνιδιού θα αυξηθεί αμέσως. Το πρόγραμμα είναι ένα κουτί pandora. Ό, τι μπορείς να φανταστείς, μπορεί να το κάνει για σένα. Δεν υπάρχει λοιπόν λόγος να μην μάθουμε αυτή τη γλώσσα που μπορεί να επικοινωνήσει με υπολογιστές. Στο επόμενο κεφάλαιο, θα σας παρουσιάσουμε μια άλλη δήλωση ελέγχου διαδικασίας. Μπορεί να ελέγξει τη ροή της διαδικασίας και να παράγει πιο περίπλοκα και μεταβλητά αποτελέσματα. Με τη δήλωση if, μπορείτε να δημιουργήσετε τα δικά σας παιχνίδια περιπέτειας κειμένου με ευκολία! Αυτό το άρθρο προέρχεται από τον σχεδιαστή Wenzy. Σχετικές αναγνώσεις: Ενδιαφέρουσες οδηγίες προγραμματισμού για σχεδιαστές-Επεξεργασία αρχικής αφής Ενδιαφέρουσες οδηγίες προγραμματισμού για σχεδιαστές-Δημιουργήστε το πρώτο σας πρόγραμμα επεξεργασίας –Πάρτε την εικόνα σας να τρέχει (Μέρος Πρώτο) Ενδιαφέρουσες οδηγίες προγραμματισμού για σχεδιαστής - Προβάλετε την εικόνα σας (Μέρος Δεύτερο)

Βήμα 8: Πηγή

Αυτό το άρθρο προέρχεται από:

Εάν έχετε οποιεσδήποτε ερωτήσεις, μπορείτε να επικοινωνήσετε στο : [email protected].

Συνιστάται: