1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:01,960 ΟΜΙΛΗΤΗΣ 1: Ας μιλήσουμε για το νερό. 3 00:00:01,960 --> 00:00:07,280 Σε αυτό το πρόβλημα, θα ζητήσει από το χρήστη να πει μας πόσο καιρό μέσα σε λίγα λεπτά ντους τους ήταν 4 00:00:07,280 --> 00:00:11,040 και στη συνέχεια τον υπολογισμό του ισοδύναμου αριθμό φιαλών νερού 5 00:00:11,040 --> 00:00:12,970 αυτή που χρησιμοποιείται ντους τους. 6 00:00:12,970 --> 00:00:16,379 >> Ποια είναι λοιπόν μας για να κάνουμε το για αυτό το πρόβλημα; 7 00:00:16,379 --> 00:00:20,050 Κατ 'αρχάς, θα πάμε να θέλουν να παρακινήσει και στη συνέχεια να επικυρώσει 8 00:00:20,050 --> 00:00:22,100 η είσοδος που ο χρήστης μας δίνει. 9 00:00:22,100 --> 00:00:24,790 Μόλις έχουμε εξασφαλίσει ότι μπορούμε έχουν έγκυρη εισόδου του χρήστη, 10 00:00:24,790 --> 00:00:28,230 θα πάμε για να υπολογίσει το ισοδύναμο αριθμό μπουκάλια νερό 11 00:00:28,230 --> 00:00:30,770 ότι ο χρήστης είχε κατά τη διάρκεια της ντους τους, και στη συνέχεια να είμαστε 12 00:00:30,770 --> 00:00:33,720 πρόκειται να τους πει από εκτύπωση τον αριθμό αυτό. 13 00:00:33,720 --> 00:00:37,230 >> Ας αντιμετωπίσουμε την πρώτη μας εργασία, με αποτέλεσμα και την επικύρωση 14 00:00:37,230 --> 00:00:38,550 η παρέμβαση του χρήστη. 15 00:00:38,550 --> 00:00:40,910 Γι 'αυτό έχουμε γράψει ένα λειτουργία για σας που ονομάζεται 16 00:00:40,910 --> 00:00:43,950 get_int βρίσκεται στο CS50 Βιβλιοθήκη. 17 00:00:43,950 --> 00:00:48,710 get_int διασφαλίζει ότι οι είσοδοι του χρήστη ένας ακέραιος αριθμός, έτσι ώστε κάθε θετικοί αριθμοί, 18 00:00:48,710 --> 00:00:51,700 αρνητικούς αριθμούς, ή μηδέν είναι όλες δεκτές. 19 00:00:51,700 --> 00:00:55,900 Αλλά αν ο χρήστης εισάγει οτιδήποτε άλλο, έτσι ώστε οποιοσδήποτε συνδυασμός γραμμάτων ή αριθμών 20 00:00:55,900 --> 00:00:59,710 ή δεκαδικούς αριθμούς, τότε η χρήστης θα σας ζητηθεί να επαναλάβετε 21 00:00:59,710 --> 00:01:04,319 και η λειτουργία δεν θα δεχθεί τίποτα μέχρι ο χρήστης να τους δίνει έναν ακέραιο. 22 00:01:04,319 --> 00:01:06,410 >> Επομένως, πώς θα χρησιμοποιήσετε get_int; 23 00:01:06,410 --> 00:01:10,830 Αν ανοίξετε το χώρο εργασίας σας και δημιουργήσετε ένα αρχείο με το όνομα integer.c ας 24 00:01:10,830 --> 00:01:12,110 πληκτρολογήστε την ακόλουθη. 25 00:01:12,110 --> 00:01:14,760 Hashtag περιλαμβάνουν cs50.h. 26 00:01:14,760 --> 00:01:18,480 Αυτό είναι απαραίτητο επειδή get_int είναι μια συνάρτηση βιβλιοθήκης CS50, 27 00:01:18,480 --> 00:01:21,890 έτσι πρέπει να hashtag περιλαμβάνουν δήλωσή του, προκειμένου 28 00:01:21,890 --> 00:01:23,370 να χρησιμοποιήσετε τη λειτουργία. 29 00:01:23,370 --> 00:01:26,570 Και στη συνέχεια, στο κύριο μου λειτουργούν Είμαι ακριβώς πρόκειται 30 00:01:26,570 --> 00:01:29,560 για να καλέσετε απλά το get_int λειτουργία. 31 00:01:29,560 --> 00:01:31,750 >> Έτσι, ας τρέξει αυτό και να δούμε πώς λειτουργεί. 32 00:01:31,750 --> 00:01:35,092 Έχω ήδη συνταχθεί, οπότε ας απλά να προχωρήσει και να τρέξει αυτό το πρόγραμμα, 33 00:01:35,092 --> 00:01:36,480 ./ακέραιος αριθμός. 34 00:01:36,480 --> 00:01:39,880 Εδώ έχω μια άμεση και Εδώ είναι όπου εισάγετε την τιμή. 35 00:01:39,880 --> 00:01:44,880 Πείτε έβαλα σε μόλις κάποιον ακέραιο, 50, οι εξαιρεί πρόγραμμα και αποχωρήσεις 36 00:01:44,880 --> 00:01:45,960 και αυτό είναι αυτό. 37 00:01:45,960 --> 00:01:49,350 >> Αλλά πείτε μου να τρέξει ξανά και Έχω κάτι εισόδου άλλο. 38 00:01:49,350 --> 00:01:51,350 Ίσως, γεια κόσμο. 39 00:01:51,350 --> 00:01:55,660 Αυτό δεν είναι ένας ακέραιος έτσι ώστε η πρόγραμμα θα μου ζητήσει να προσπαθήσετε ξανά. 40 00:01:55,660 --> 00:01:59,160 Ας προσπαθήσουμε και πάλι με ίσως ένας δεκαδικός αυτή τη φορά. 41 00:01:59,160 --> 00:02:03,450 0.5, και πάλι, δεν είναι ένας ακέραιος έτσι το πρόγραμμα δεν θα το δεχτούν 42 00:02:03,450 --> 00:02:05,290 και αυτό θα μου πείτε να δοκιμάσετε ξανά. 43 00:02:05,290 --> 00:02:07,070 Έτσι, ας δώσει έναν άλλο αριθμό. 44 00:02:07,070 --> 00:02:09,830 Το πρόγραμμα δέχεται, κλείνει, και τελειώσατε. 45 00:02:09,830 --> 00:02:13,520 >> Έτσι τώρα έχουμε μια λειτουργία που μας επιτρέπει και διασφαλίζει 46 00:02:13,520 --> 00:02:16,790 ότι ο χρήστης εισάγει ένα ακέραιος, αλλά πώς μπορούμε να 47 00:02:16,790 --> 00:02:20,330 στην πραγματικότητα να παρακολουθείτε το ακέραιος που εισάγονται από το χρήστη; 48 00:02:20,330 --> 00:02:25,260 Λοιπόν, το μόνο που θα κάνουμε είναι κατάστημα αυτή η τιμή σε μια μεταβλητή, ας πούμε n. 49 00:02:25,260 --> 00:02:30,580 Έτσι, αν Δηλώνω έναν ακέραιο n, και μπορώ να ορίσω την τιμή αυτή να get_int, 50 00:02:30,580 --> 00:02:34,700 τότε n τότε θα αποθηκεύσει οτιδήποτε Εκτιμούμε το χρήστη εισαχθούν. 51 00:02:34,700 --> 00:02:38,620 >> Εντάξει, έτσι και τώρα έχουμε εξασφαλίσει ότι ο χρήστης θα μας δώσει έναν ακέραιο 52 00:02:38,620 --> 00:02:42,550 και ξέρουμε πώς να παρακολουθείτε του ακεραίου, αλλά να θυμάστε, 53 00:02:42,550 --> 00:02:45,610 ακέραιοι είναι τόσο θετικές όσο και αρνητικές. 54 00:02:45,610 --> 00:02:49,110 Γι 'αυτό δεν έχει νόημα στο πλαίσιο αυτού του προβλήματος 55 00:02:49,110 --> 00:02:53,570 ότι ο χρήστης παίρνει ένα ντους του λένε αρνητικών 12 λεπτά. 56 00:02:53,570 --> 00:02:59,310 Γι 'αυτό και πρέπει να βεβαιωθείτε ότι ο χρήστης στην πραγματικότητα μας δίνει ένα θετικό ακέραιο. 57 00:02:59,310 --> 00:03:02,130 Τώρα δεν έχουμε μόνο ένα ενιαία λειτουργία για το ότι, 58 00:03:02,130 --> 00:03:04,620 έτσι θα πάμε να έχουν για να δημιουργήσει αυτό τον εαυτό μας. 59 00:03:04,620 --> 00:03:07,190 >> Έτσι θέλουμε να συνεχώς ζητήσει από το χρήστη 60 00:03:07,190 --> 00:03:09,730 μέχρι να μας δώσει ένα θετικό ακέραιο. 61 00:03:09,730 --> 00:03:14,300 Αν κάνω κάτι συνεχώς συνέχεια που είναι παρόμοια με έναν βρόχο, μια επανάληψη. 62 00:03:14,300 --> 00:03:19,130 Έτσι ένα από τα κατασκευάσματα που χρησιμοποιούμε το c για να εφαρμόσουν την επανάληψη και βρόχους 63 00:03:19,130 --> 00:03:20,410 είναι ένας βρόχος while. 64 00:03:20,410 --> 00:03:23,020 Έτσι, ένα βρόχο while, όπως παρουσιάζεται εδώ, θα εκτελέσει 65 00:03:23,020 --> 00:03:27,030 ό, τι είναι στο σώμα του βρόχου ως Όσο οι δίνεται αξιολογεί την κατάσταση 66 00:03:27,030 --> 00:03:27,900 στην αληθινή. 67 00:03:27,900 --> 00:03:30,640 Το συντομότερο αυτή την κατάσταση ψευδής, τότε 68 00:03:30,640 --> 00:03:34,830 το πρόγραμμα θα προχωρήσει σε ό, τι έρχεται μετά από το σώμα του βρόχου. 69 00:03:34,830 --> 00:03:39,400 >> Έτσι, ενώ οι βρόχοι πρόκειται να να είναι πραγματικά χρήσιμο σε CS50. 70 00:03:39,400 --> 00:03:42,590 Αλλά σε αυτό το συγκεκριμένο περίπτωση, ξέρουμε ότι είμαστε 71 00:03:42,590 --> 00:03:48,140 πρόκειται να ζητήσει από το χρήστη τουλάχιστον άπαξ και τότε μόνο βρόχος εάν είναι απαραίτητο. 72 00:03:48,140 --> 00:03:51,080 Έτσι, εδώ ερχόμαστε σε ένα ειδική κατασκευή και αυτό είναι 73 00:03:51,080 --> 00:03:55,020 πολύ παρόμοια με την ενώ βρόχος που ονομάζεται ένα do-while loop. 74 00:03:55,020 --> 00:03:58,840 >> Έτσι, ένα do-while loop εκτελεί το σώμα του βρόχου τουλάχιστον μια φορά 75 00:03:58,840 --> 00:04:01,750 και στη συνέχεια ελέγχει για να δει αν θα πρέπει να εκτελέσει, 76 00:04:01,750 --> 00:04:05,310 σε αντίθεση με ένα βρόχο, ενώ, η οποία θα ελέγξει την κατάσταση 77 00:04:05,310 --> 00:04:07,200 και στη συνέχεια να εκτελέσει το σώμα. 78 00:04:07,200 --> 00:04:11,880 Έτσι, σε μια do-while loop αυτό που θα μπορούσαμε κάνετε είναι να ζητήσει από το χρήστη για ένα ακέραιο, 79 00:04:11,880 --> 00:04:14,450 και στη συνέχεια, ελέγξτε αν είναι έγκυρη ή όχι. 80 00:04:14,450 --> 00:04:18,130 Αν είναι άκυρη, τότε θα επαναλάβετε τη διαδικασία ζητώντας από το χρήστη 81 00:04:18,130 --> 00:04:22,290 για να μας δώσει ένα άλλο ακέραιο, και στη συνέχεια, μόνο όταν η ακέραιος είναι έγκυρη, 82 00:04:22,290 --> 00:04:25,060 θα συνεχίσουμε να ό, τι έρχεται μετά. 83 00:04:25,060 --> 00:04:28,030 >> Τώρα θα παρατηρήσετε ότι το δήλωση του ακεραίου n 84 00:04:28,030 --> 00:04:31,670 είναι ελαφρώς διαφορετικό από αυτό που έκανε πριν στο προηγούμενο παράδειγμα 85 00:04:31,670 --> 00:04:33,640 και αυτό είναι λόγω του πεδίου εφαρμογής. 86 00:04:33,640 --> 00:04:37,920 Αν είχαμε δηλώσει ο ακέραιος n μέσα του σώματος του do-while loop, 87 00:04:37,920 --> 00:04:42,640 τότε δεν θα είμαστε σε θέση να έχουν πρόσβαση σε ότι η τιμή του n έξω από αυτά τα σγουρά 88 00:04:42,640 --> 00:04:45,050 τιράντες που δείχνει το σώμα του βρόχου. 89 00:04:45,050 --> 00:04:51,080 Αλλά εμείς στην πραγματικότητα θέλουν να έχουν πρόσβαση στο τιμή του n αργότερα στο πρόγραμμά μας. 90 00:04:51,080 --> 00:04:55,730 >> Εντάξει, έτσι και τώρα ας μιλήσουμε για ποια πρέπει να είναι αυτή η κατάσταση. 91 00:04:55,730 --> 00:05:00,400 Θέλουμε να reprompt μόνο το χρήστη όσο η είναι έγκυρη. 92 00:05:00,400 --> 00:05:04,640 Έτσι σκεφτείτε για τον εαυτό σας τι μια μη έγκυρη ακέραια τιμή θα μοιάζουν 93 00:05:04,640 --> 00:05:08,060 και στη συνέχεια να δημιουργήσετε ένα Boolean έκφραση για να εκφράσω αυτό. 94 00:05:08,060 --> 00:05:13,070 >> Είμαστε σχεδόν τελειώσει με υποεργασίας μας την παρακίνηση και την επικύρωση εισόδου του χρήστη. 95 00:05:13,070 --> 00:05:16,010 Έτσι, ας κάνουμε αυτό το λίγο λίγο πιο φιλική προς το χρήστη 96 00:05:16,010 --> 00:05:18,390 και να δώσει στο χρήστη μια μικρή λίγο περισσότερες πληροφορίες 97 00:05:18,390 --> 00:05:20,510 από ό, τι είμαστε αυτούς προτροπή για. 98 00:05:20,510 --> 00:05:24,500 Έτσι, ας ζητήσει από το χρήστη, ανά το spec, με τα πρακτικά κορδόνι. 99 00:05:24,500 --> 00:05:28,935 Έτσι, χρησιμοποιώντας printf δηλώσεις σας, κάνουν βεβαιωθείτε ότι έχετε ταιριάζει αυτό ακριβώς. 100 00:05:28,935 --> 00:05:30,230 >> Εντάξει. 101 00:05:30,230 --> 00:05:33,840 Έτσι τώρα έχουμε ένα έγκυρο χρήστη εισόδου, ένας θετικός ακέραιος 102 00:05:33,840 --> 00:05:37,400 τιμή για πόσα λεπτά πέρασε στο ντους. 103 00:05:37,400 --> 00:05:41,300 Έτσι, ποιο είναι το επόμενο είναι να υπολογίσει ο ισοδύναμος αριθμός των φιαλών. 104 00:05:41,300 --> 00:05:45,250 Τι θα πάμε να κάνουμε εδώ θα μπορούσε να είναι πολύ προφανές για να έχετε σε πρώτη φάση, 105 00:05:45,250 --> 00:05:46,640 και αυτό είναι εντάξει. 106 00:05:46,640 --> 00:05:49,320 Αυτό που θέλουμε να κάνουμε είναι να έχουμε θέλετε να ξεκινήσετε την εξάσκηση 107 00:05:49,320 --> 00:05:53,810 Η ιδέα για την ανίχνευση και μοτίβα ανάπτυξη φόρμουλες για το πρόβλημα. 108 00:05:53,810 --> 00:05:57,200 >> Έτσι μας λένε ανά το spec ότι το ένα λεπτό στο ντους 109 00:05:57,200 --> 00:05:59,960 είναι ισοδύναμο με περίπου 12 μπουκάλια νερό. 110 00:05:59,960 --> 00:06:03,020 Έτσι, στη συνέχεια, δύο λεπτά θα είναι ισοδύναμο με 24, 111 00:06:03,020 --> 00:06:05,850 και πέντε λεπτά θα να είναι ισοδύναμη με 60. 112 00:06:05,850 --> 00:06:08,390 Έτσι τώρα, αν νομίζετε ότι το έχεις, τότε ας 113 00:06:08,390 --> 00:06:10,390 δείτε αν μπορείτε να έρθετε με ένα μοτίβο ή του τύπου 114 00:06:10,390 --> 00:06:14,990 να εκφράσουν αν έχουμε πει, n λεπτά, πόσα μπουκάλια νερό 115 00:06:14,990 --> 00:06:17,930 θα ήταν αυτό να εκφραστεί με όρους του n; 116 00:06:17,930 --> 00:06:20,680 >> Και πάλι, αν και αυτό θα μπορούσε να είναι απλό στην αρχή, 117 00:06:20,680 --> 00:06:23,240 αργότερα, όταν φτάσουμε στο πιο περίπλοκα προβλήματα 118 00:06:23,240 --> 00:06:26,360 θα πάμε να θέλουν να μπει σε η πρακτική του προσδιορισμού 119 00:06:26,360 --> 00:06:30,120 πρότυπα και την ανάπτυξη τύπων να καταλάβω αυτά τα πράγματα έξω. 120 00:06:30,120 --> 00:06:33,450 >> Στο γ έχετε πρόσβαση σε πρότυπο αριθμητικές πράξεις, 121 00:06:33,450 --> 00:06:36,520 πρόσθεση, αφαίρεση, πολλαπλασιασμό και διαίρεση. 122 00:06:36,520 --> 00:06:38,420 Γι 'αυτό και θα το αφήσει να μπορείτε τώρα να καταλάβω 123 00:06:38,420 --> 00:06:41,300 πώς να εκφράσουν την αντίστοιχο αριθμό φιαλών 124 00:06:41,300 --> 00:06:43,990 ότι ο χρήστης που καταναλώνεται κατά τη διάρκεια του ντους τους. 125 00:06:43,990 --> 00:06:45,700 >> Εντάξει, είμαστε σχεδόν τελειώσει. 126 00:06:45,700 --> 00:06:50,650 Έχουμε ζητηθεί από το χρήστη για τη συμβολή τους, έχουμε εξασφαλίσει ότι είναι έγκυρη εισόδου, 127 00:06:50,650 --> 00:06:53,330 και στη συνέχεια να έχουμε βρει τον τρόπο για τον υπολογισμό του ισοδύναμου 128 00:06:53,330 --> 00:06:55,480 αριθμός των φιαλών που καταναλώνονται. 129 00:06:55,480 --> 00:06:59,430 Έτσι, το τελευταίο πράγμα που πρέπει να κάνετε είναι να εξόδου το ισοδύναμο αριθμό των φιαλών 130 00:06:59,430 --> 00:07:02,410 και ελπίζω να ενθαρρύνουν τους για τη διατήρηση λίγο νερό. 131 00:07:02,410 --> 00:07:06,270 >> Έξοδο την τιμή θα είναι μια δήλωση printf. 132 00:07:06,270 --> 00:07:09,720 Αν ήθελα να σας πω ότι εγώ έχουν τρία κατοικίδια ζώα, για παράδειγμα, 133 00:07:09,720 --> 00:07:13,090 Θα μπορούσε να χρησιμοποιήσει μια δήλωση printf ότι φαίνεται κάτι τέτοιο. 134 00:07:13,090 --> 00:07:15,880 Έχω τρία κατοικίδια ζώα, καθώς και μια νέα γραμμή για ωραία μορφοποίηση. 135 00:07:15,880 --> 00:07:17,880 >> Τώρα δεν θέλουμε να απλά πράγματα σκληρά κώδικα. 136 00:07:17,880 --> 00:07:20,740 Πείτε τον αριθμό μου κατοικίδια ζώα αλλάζει την πάροδο του χρόνου. 137 00:07:20,740 --> 00:07:25,080 Στη συνέχεια, Πάω να κάνουν χρήση του σύμβολα κράτησης θέσης στη δήλωση printf μου. 138 00:07:25,080 --> 00:07:27,350 Έτσι, εδώ ο αριθμός μου είναι ένας ακέραιος. 139 00:07:27,350 --> 00:07:31,480 Έτσι, Πάω να κάνω ένα σύμβολο κράτησης θέσης έναν ακέραιο χρησιμοποιώντας% i. 140 00:07:31,480 --> 00:07:33,930 Πάω να γράψω το string, και στη συνέχεια, μετά τη χορδή 141 00:07:33,930 --> 00:07:38,000 Γράφω ένα κόμμα και στη συνέχεια το μεταβλητή που θέλετε να εκτυπώσετε. 142 00:07:38,000 --> 00:07:42,730 Έτσι ώστε η τιμή θα εκτυπωθεί αντί της κράτησης θέσης,% i. 143 00:07:42,730 --> 00:07:47,630 >> Μπορείτε να χρησιμοποιήσετε σύμβολα κράτησης θέσης, όπως καλά, για πλωτήρες με ένα% f. 144 00:07:47,630 --> 00:07:50,420 Μπορείτε επίσης να έχετε πολλαπλές σύμβολα κράτησης θέσης σε μια σειρά. 145 00:07:50,420 --> 00:07:53,950 Για παράδειγμα, αν έχω κάποιο αριθμό των σκύλων και κάποιο αριθμό γάτες, 146 00:07:53,950 --> 00:07:59,210 Έβαλα δύο δείκτες τοποθέτησης εδώ και, στη συνέχεια, δύο μεταβλητές μου στην αντίστοιχη σειρά. 147 00:07:59,210 --> 00:08:03,130 >> Έτσι τώρα που γνωρίζουμε πώς να εκτυπώσετε οι τιμές που αποθηκεύονται στις μεταβλητές, 148 00:08:03,130 --> 00:08:06,030 το τελευταίο πράγμα που πρέπει να κάνουμε είναι να διασφαλίσουμε ότι θα 149 00:08:06,030 --> 00:08:10,920 εκτυπώνουμε την τιμή στην ακριβή μορφή επισημαίνονται στη συγγραφή υποχρεώσεων. 150 00:08:10,920 --> 00:08:14,990 Με αυτό, έχουμε ζητηθεί η χρήστη και να επικυρωθούν εισόδου τους. 151 00:08:14,990 --> 00:08:17,920 Στη συνέχεια έχουμε υπολογίζεται το ισοδύναμο αριθμό φιαλών νερού 152 00:08:17,920 --> 00:08:22,100 ότι καταναλώνουν κατά τη διάρκεια του ντους τους, και έχουμε εξάγεται ότι η αξία για αυτούς. 153 00:08:22,100 --> 00:08:24,440 Και έτσι, έχουμε ολοκληρώσει το νερό. 154 00:08:24,440 --> 00:08:28,730 >> Το όνομά μου είναι [? Zamila,?] και αυτό είναι CS50. 155 00:08:28,730 --> 00:08:29,909