Μετάβαση στο περιεχόμενο
Topos Uranos

Περίληψη

Αυτό το μάθημα ανοίγει τη δεύτερη ενότητα του κύκλου μαθημάτων, αφιερωμένη στα δεδομένα και στους τύπους τους. Εξηγεί σε τι χρησιμεύει η ενότητα: να διδάξει ότι κάθε δεδομένο ενός προγράμματος ζει στη μνήμη με έναν τύπο που ορίζει ποιες τιμές μπορεί να πάρει, πόσο χώρο πιάνει και ποιες πράξεις δέχεται, και ότι τα όρια αυτά έχουν παρατηρήσιμες συνέπειες· παρουσιάζει τα τέσσερα μαθήματά της και το νήμα που τα ενώνει, από τη μεταβλητή ως κελί με όνομα και τιμή ως τις μετατροπές μεταξύ τύπων και τις σταθερές· υπενθυμίζει όσα η ενότητα θεωρεί γνωστά από την πρώτη, δηλαδή να γράφει κανείς, να μεταγλωττίζει και να εκτελεί ένα πρόγραμμα που διαβάζει και γράφει· διατυπώνει το πρόβλημα που λύνει η ενότητα, το πρόβλημα ενός προγράμματος φαινομενικά σωστού του οποίου οι λογαριασμοί δεν συμπίπτουν με εκείνους των μαθηματικών, αρχίζοντας από το άθροισμα 0.1+0.20.1 + 0.2, που σε έναν υπολογιστή δεν δίνει ακριβώς 0.30.3· και δείχνει πού οδηγεί, στις ενότητες που ακολουθούν και στον κύκλο μαθημάτων Προγραμματισμός σε C++ II.

Μαθησιακοί στόχοι

  1. Να περιγράφουμε τη σειρά των περιεχομένων της ενότητας και να εξηγούμε τι προσφέρει κάθε μάθημα σε εκείνο που ακολουθεί.
  2. Να θυμόμαστε όσα χρειάζονται από την ενότητα 1 (τον κύκλο μεταγλώττισης και εκτέλεσης, την έξοδο με μορφοποίηση, την ανάγνωση με std::cin και την ανάγνωση των μηνυμάτων του μεταγλωττιστή) και να τα επαναλαμβάνουμε, αν χρειάζεται.
  3. Να εξηγούμε, με ένα παράδειγμα, γιατί ένας αριθμός ενός προγράμματος δεν είναι αριθμός των μαθηματικών, και να προαναγγέλλουμε γιατί το 0.1+0.20.1 + 0.2 δεν είναι ακριβώς 0.30.3 σε έναν υπολογιστή.
  4. Να αναγνωρίζουμε τι αναμένεται να ξέρουμε να κάνουμε στο τέλος της ενότητας, και να το διακρίνουμε από όσα θα μάθουμε στις ενότητες που ακολουθούν.

Αρχική αξιολόγηση

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

Αρχική αξιολόγηση

Πριν ξεκινήσεις την ενότητα, μέτρησε το σημείο εκκίνησής σου. Είναι μια σύντομη αυτοαξιολόγηση: δεν βαθμολογείται και το αποτέλεσμα αποθηκεύεται μόνο στον περιηγητή σου.

  1. Ερώτηση 1Από προηγούμενες ενότητεςΜια διαδικασία λέει: «1. Η rr παίρνει την τιμή 17. 2. Η rr παίρνει την τιμή r−5r - 5. 3. Η rr παίρνει την τιμή r−5r - 5». Πόσο κάνει η rr στο τέλος;

  2. Ερώτηση 2Από προηγούμενες ενότητεςΤι γράφει η εντολή std::println("{:.2f}", 2.0 / 3);;

  3. Ερώτηση 3Από προηγούμενες ενότητεςΘέλουμε να γράψουμε το 12.34612.346 με δύο δεκαδικά ψηφία, στρογγυλοποιώντας. Τι παίρνουμε;

  4. Ερώτηση 4Από προηγούμενες ενότητεςΈνα πρόγραμμα έχει στη γραμμή 5 const int pages{12} και στη γραμμή 6 std::println("{}", pages);. Ο μεταγλωττιστής γράφει 6:5: error: expected ',' or ';' before 'std'. Πού βρίσκεται το ελάττωμα;

  5. Ερώτηση 5Ένα πρόγραμμα δηλώνει int a{2}; και int b{7};, και έπειτα εκτελεί a = b; και b = 10;. Πόσο κάνει η a στο τέλος;

  6. Ερώτηση 6Πώς γράφεται ο αριθμός 13 στη βάση 2;

  7. Ερώτηση 7Ένας int 4 byte αποθηκεύει το 2 147 483 6472\,147\,483\,647, τη μέγιστη τιμή του, και το πρόγραμμα του προσθέτει 1. Τι μπορούμε να πούμε;

  8. Ερώτηση 8Έχει το 1/31/3 πεπερασμένη δεκαδική παράσταση;

  9. Ερώτηση 9Τι γράφει το std::println("{}", 0.1 + 0.2);;

  10. Ερώτηση 10Ένα πρόγραμμα δηλώνει const double ratio{7 / 2}; και γράφει τη ratio. Τι εμφανίζεται;