Algorithm program(new version)

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

Transcript of Algorithm program(new version)

Page 1: Algorithm program(new version)

Εισαγωγή στον προγραμματισμό

Τι κερδίζουμε μαθαίνοντας να προγραμματίζουμε;

•Κατανοούμε καλύτερα πώς δουλεύει ένας υπολογιστής

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

•Δημιουργούμε δικά μας παιχνίδια και απλά γραφικά και άρα διασκεδάζουμε

Page 2: Algorithm program(new version)

Ο προγραμματισμός ασχολείται με την επίλυση προβλημάτων

Γενικά ως πρόβλημα θεωρούμε κάθε ζήτημα που τίθεται προς επίλυση, κάθε κατάσταση που μας απασχολεί και πρέπει να αντιμετωπιστεί.

Η έννοια του προβλήματος

Μπορείτε να σκεφτείτε διάφορα προβλήματα είτε από την καθημερινή ζωή είτε προγραμματισμου;

Page 3: Algorithm program(new version)

Γενικά προβλήματα:

•η οργάνωση μιας σχολικής εκδρομής

•η εύρεση της ταχύτητας ενός αυτοκινήτου όταν γνωρίζουμε την απόσταση που

διανύει και το χρόνο που έκανε

•Η συναρμολόγηση ενός μικρού μοντέλου αυτοκινήτου

•Η πραγματοποίηση μιας χημικής αντίδρασης

Προβλήματα με τα οποία ασχολείται ένας προγραμματιστής:

•Η κατασκευή ενός κειμενογράφου

•Η δημιουργία μιας ιστοσελίδας

•Η δημιουργία ενός ηλεκτρονικού πελατολόγιου (βάση δεδομένων)

•Η κατασκευή ενός ηλεκτρονικού παιχνιδιού π.χ tetris

Page 4: Algorithm program(new version)

Κατανόηση του προβλήματος

(βρίσκουμε τα γνωστά στοιχεία και ποιο είναι

το ζητούμενο)

Χωρίζουμε σε υποπροβλήματα (αν χρειαστεί)

Σχεδιάζουμε τη λύση

Υλοποιούμε την λύση

ΜΕΘΟΔΟΛΟΓΙΑ ΕΠΙΛΥΣΗΣ ΕΝΌΣ ΠΡΟΒΛΗΜΑΤΟΣ

Αλγόριθμος

Page 5: Algorithm program(new version)

Γ΄ τάξηΓ΄ τάξη

Τι είναι Αλγόριθμος

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

Page 6: Algorithm program(new version)

Γ΄ τάξηΓ΄ τάξη

Με αλγόριθμο μπορούμε να περιγράψουμε τη λύση οποιουδήποτε προβλήματος

Παράδειγμα ενός αλγόριθμου για να μαγειρέψει ένας άπειρος μάγειρας μια μακαρονάδα:1. Άνοιξε το μάτι της κουζίνας στο 2.2. Βάλε 3 λίτρα νερό σε μία κατσαρόλα χωρητικότητας 4 λίτρων.3. Τοποθέτησε την κατσαρόλα στο μάτι της κουζίνας, που έχεις ήδη ανάψει.4. Πρόσθεσε στην κατσαρόλα μία κουταλιά της σούπας αλάτι.5. Περίμενε μέχρι να βράσει το νερό. 6. Βγάλε τα μακαρόνια από το πακέτο. 7. Βάλε τα μακαρόνια στην κατσαρόλα.8. Ανακάτευε τα μακαρόνια για 10 λεπτά.9. Κλείσε το μάτι της κουζίνας που άνοιξες.10. Βγάλε την κατσαρόλα από το μάτι της κουζίνας.11. Άδειασε τα μακαρόνια από την κατσαρόλα σε ένα σουρωτήρι.12. Ρίξε κρύο νερό από τη βρύση στα μακαρόνια για 20 δευτερόλεπτα.13. Άφησε για 2 λεπτά τα μακαρόνια να στραγγίξουν.14. Σερβίρισε τα μακαρόνια στο πιάτο. 15. Πρόσθεσε σε κάθε πιάτο 3 κουταλιές της σούπας τριμμένο τυρί.

Πριν προχωρήσουμε παρακάτω προσπάθησε να απαντήσεις στις ακόλουθες ερωτήσεις:

1 Τι θα συμβεί αν ξεχάσουμε την εντολή 9 στον παραπάνω αλγόριθμο;

2 Μπορούμε να αντιμεταθέσουμε τις εντολές 7 και 8;

3 Τι θα συμβεί, αν αντικαταστήσουμε την εντολή στο βήμα 4 με την εντολή «πρόσθεσε αλάτι»;

4 Αν αντιμεταθέσουμε τις εντολές 1 και 2, θα υπάρξει κάποιο πρόβλημα στον αλγόριθμο;

5. Τι θα συμβεί αν μετά την εντολή 11 βάλουμε την εντολή:

ΠΗΓΑΙΝΕ ΣΤΗΝ ΕΝΤΟΛΗ 1

Παράδειγμα 1ο Πρόβλημα: Μαγειρέψε μια μακαρονάδα

Page 7: Algorithm program(new version)

Γ΄ τάξηΓ΄ τάξη

Ιδιότητες ενός Αλγορίθμου

• Τα βήματα που αποτελούν έναν αλγόριθμο ονομάζονται οδηγίες ή εντολές.

• Οι αλγόριθμοι που κατασκευάζουμε πρέπει να πληρούν κάποιες προϋποθέσεις όπως:

• Ότι κάποτε θα τελειώσει • Να έχει ακρίβεια

• Να έχει σαφήνεια

• Οι εντολές να είναι εκφρασμένες με απλά λόγια

Page 8: Algorithm program(new version)

Περίπτωση 1Περίπτωση 1 1.1. Ευθεία 100 Ευθεία 100 βήματα2.2. ΔεξιάΔεξιά στροφήστροφή3.3. Ευθεία 100 Ευθεία 100 βήματα4.4. ΔεξιάΔεξιά στροφήστροφή5.5. Ευθεία 100 Ευθεία 100 βήματα6.6. ΔεξιάΔεξιά στροφήστροφή7.7. Ευθεία 100 Ευθεία 100 βήματα8.8. τέλοςτέλος

Περίπτωση 2Περίπτωση 21.1. Ευθεία 100 Ευθεία 100 βήματα2.2. ΔεξιάΔεξιά στροφή 90στροφή 90οο

3.3. Ευθεία 100 Ευθεία 100 βήματα4.4. ΔεξιάΔεξιά στροφή 90στροφή 90οο

5.5. Ευθεία 100 Ευθεία 100 βήματα6.6. ΔεξιάΔεξιά στροφή 90στροφή 90οο

7.7. Ευθεία 100 Ευθεία 100 βήματα8.8. ΔεξιάΔεξιά στροφή 90στροφή 90οο

9.9. Επανάλαβε τα βήματα 1-8Επανάλαβε τα βήματα 1-810.10. ΤέλοςΤέλος

Περίπτωση 3Περίπτωση 31.1. Ευθεία 100 Ευθεία 100 βήματα2.2. ΔεξιάΔεξιά στροφή 90στροφή 90οο

3.3. Ευθεία 100 Ευθεία 100 βήματα4.4. ΔεξιάΔεξιά στροφή 90στροφή 90οο

5.5. Ευθεία 100 Ευθεία 100 βήματα6.6. ΔεξιάΔεξιά στροφή 90στροφή 90οο

7.7. Ευθεία 100 Ευθεία 100 βήματα8.8. ΔεξιάΔεξιά στροφή 90στροφή 90οο

9.9. ΤέλοςΤέλος

Παράδειγμα 2: Κατασκευή τετραγώνου με πλευρές 100 βήματα

Page 9: Algorithm program(new version)

1.1. Μετρήστε το μήκοςΜετρήστε το μήκος2.2. Μετρήστε το ύψοςΜετρήστε το ύψος3.3. Πολλαπλασίασε το Πολλαπλασίασε το

μήκος με το ύψοςμήκος με το ύψος4.4. Το γινόμενο από το βήμα Το γινόμενο από το βήμα

3 καταχώρησε το στο 3 καταχώρησε το στο εμβαδόνεμβαδόν

Παράδειγμα 2ο Πρόβλημα: Υπολογίστε το εμβαδό ενός οικοπέδου με σχήμα ορθογωνίου

Ο αλγόριθμος Η μαθηματική επίλυση

Μήκος= 30μΠλάτος= 15μ.30μ * 15μ= 450 μ2

Εμβαδόν= 450 μ2

EmvadonMake “a readwordMake “b readwordMake “sum :a + :bPrint :sumend

Το πρόγραμμα που θα δοθεί στον υπολογιστή

Page 10: Algorithm program(new version)

Γ΄ τάξηΓ΄ τάξη

Τι είναι πρόγραμμα Ένα πρόγραμμα αποτελείται από μία σειρά εντολών που δίνονται στον υπολογιστή σε γλώσσα κατανοητή σε αυτόν με σκοπό να εκτελέσει κάποια συγκεκριμένη λειτουργία ή να υπολογίσει κάποιο επιθυμητό αποτέλεσμα.

Page 11: Algorithm program(new version)

Γ΄ τάξηΓ΄ τάξη

void DisplayBlock(SBlock Block) { if (Block.nY < 1) return; RECT rcBlock = g_rcBlock; rcBlock.left = Block.nColor * BLOCK_DIAMETER; rcBlock.right = Block.nColor * BLOCK_DIAMETER + BLOCK_DIAMETER;

g_pDisplay->Blt( (DWORD)Block.nX * BLOCK_DIAMETER - 2 , (DWORD)Block.nY * BLOCK_DIAMETER , g_pSecondarySurface, &rcBlock );

}

Εικόνα 1.2: Το γνωστό παιχνίδι ΤΕΤΡΙΣ είναι ένα πρόγραμμα το οποίο περιλαμβάνει μια σειρά εντολών (ένα μικρό υποσύνολο των εντολών του μπορείτε να δείτε στα δεξιά της εικόνας).

Το παιχνίδι όπως το βλέπει ένας χρήστης Ο κώδικας που βρίσκεται πίσω από το παιχνίδι

Page 12: Algorithm program(new version)

Μια ιστοσελίδα όπως την βλέπει ένας χρήστης του διαδικτύου

Ο κώδικας που βρίσκεται από πίσω από μια ιστοσελίδα

Page 13: Algorithm program(new version)

Μερικές γλώσσες προγραμματισμού

• Visual BASIC• PASCAL• FORTRAN• C• C++• Logo• Java• ADA• PROLOG

Βασικά χαρακτηριστικά:• το αλφάβητο• το λεξιλόγιο• το συντακτικό

Πριν προχωρήσουμε παρακάτω προσπάθησε να απαντήσεις στις ακόλουθες ερωτήσεις:

Ερωτήματα1.Γιατί οι γλώσσες προγραμματισμού βασίζονται στο αγγλικό αλφάβητο;2.Μπορεί να καταλάβει ο υπολογιστής αγγλικά;

Page 14: Algorithm program(new version)

Γ΄ τάξηΓ΄ τάξη

000000000000000100000010000001100000000000100000

Οι μεταφραστές είναι προγράμματα που μετατρέπουν εντολές που είναι γραμμένες σε κάποια από τις γλώσσες προγραμματισμού σε γλώσσα μηχανής δηλ. σε 0 και 1

Τι είναι οι μεταφραστές

athroismaMake “a readwordMake “b readwordMake “sum :a + :bPrint :sumend

Το πρόγραμμα σε γλώσσα μηχανής που κατανοούν τα κυκλώματα του υπολογιστή

Το πρόγραμμα σε ψευδοαγγλικά που γράφει προγραμματιστής

μεταφραστής

Page 15: Algorithm program(new version)

Γ΄ τάξηΓ΄ τάξη

Εκτέλεση του προγράμματος στον επεξεργαστή- Εμφάνιση αποτελέσματος στην οθόνη

Στάδια για την εκτέλεση ενός προγράμματος από τον υπολογιστή

Αλγόριθμος

Υλοποίηση προγράμματος

Εισαγωγή του προγράμματος στον υπολογιστή- Μετατροπή του προγράμματοςσε 0 και 1 (γλώσσα μηχανής)

Σχεδιασμός – Περιγραφή της λύσης του προβλήματος

Page 16: Algorithm program(new version)

Οι προγραμματιστές κάνουν 2 ειδών λάθη:

• λογικά.: Τα λάθη που αφορούν τον αλγόριθμο κατασκευής . Τέτοιου είδους λάθη δεν αναγνωρίζονται από τους μεταφραστές

• Συντακτικά . Λάθη που υπάρχουν στη σύνταξη, στο αλφάβητο ή στο λεξιλόγιο μιας εντολής.

Page 17: Algorithm program(new version)

Παραδείγμα λογικού λάθους-Σχεδιασμός προγράμματος που θα υπολογίζει το εμβαδόν ενός οικοπέδου

1.1. Μετρήστε το μήκοςΜετρήστε το μήκος2.2. Μετρήστε το ύψοςΜετρήστε το ύψος3.3. Πρόσθεσε το μήκος στο Πρόσθεσε το μήκος στο

ύψοςύψος4.4. Το άθροισμα από το Το άθροισμα από το

βήμα 3 καταχώρησε το βήμα 3 καταχώρησε το στο εμβαδόνστο εμβαδόν

1.1. Μετρήστε το μήκοςΜετρήστε το μήκος2.2. Μετρήστε το ύψοςΜετρήστε το ύψος3.3. Πολλαπλασίασε το Πολλαπλασίασε το

μήκος με το ύψοςμήκος με το ύψος4.4. Το γινόμενο από το βήμα Το γινόμενο από το βήμα

3 καταχώρησε το στο 3 καταχώρησε το στο εμβαδόνεμβαδόν

Page 18: Algorithm program(new version)

Παράδειγμα συντακτικού λάθους

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = getIntent(); setContentView(R.layout.activity_maps); SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map); mapFragment.getMapAsync(this); }

Αν για παράδειγμαΑντί για public γράψουμε publik θα έχουμε ένα συντακτικό λάθος

το παραπάνω πρόγραμμα εμφανίζει ένα χάρτη σε κινητό τηλέφωνο