Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
1
ΜΥΥ105: Εισαγωγή στον Προγραμματισμό
2
Τι θα μάθουμε; Υπολογιστής; Πρόγραμμα; Γλώσσες Προγραμματισμού
Έλεγχος και Εκσφαλμάτωση Σχεδιασμός Προγράμματος Ποια είναι τα βασικά μέρη του υπολογιστή; Πως εκτελείται ένα πρόγραμμα;
3
Βασικές Έννοιες Ο υπολογιστής μέσα στο κινητό σας Ο υπολογιστής μέσα στην ψηφιακή μηχανή σας Ο υπολογιστής μέσα στην κονσόλα παιχνιδιών σας «Υπολογιστής» δεν είναι μόνο ο προσωπικός σας υπολογιστής (PC), μπορεί να είναι: iPhone 5 Galaxy S4 Panasonic Lumix GF CANNON EOS 600D Play station 3 XBOX 360 and Kinect Ερώτηση: Ποια είναι τα κοινά μέρη αυτών των «υπολογιστών»;
4
Υλικό Τα φυσικά («χειροπιαστά») μέρη τα οποία συνθέτουν έναν υπολογιστή.
5
Υλικό Τα φυσικά («χειροπιαστά») μέρη τα οποία συνθέτουν έναν υπολογιστή. 1. Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) Central Processing Unit (CPU) Tο «μυαλό» του υπολογιστή Εκτελεί απλές εργασίες όπως Πρόσθεση, αφαίρεση, πολλαπλασιασμός, διαίρεση Μετακίνηση δεδομένων από μία θέση μνήμης στην άλλη quad-core i7 CPU Ερώτηση: Ξέρεις πως μετράμε την ταχύτητα ενός επεξεργαστή;
6
Υλικό Τα φυσικά («χειροπιαστά») μέρη τα οποία συνθέτουν έναν υπολογιστή. 1. Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) Central Processing Unit (CPU) Tο «μυαλό» του υπολογιστή Εκτελεί απλές εργασίες όπως Πρόσθεση, αφαίρεση, πολλαπλασιασμός, διαίρεση Μετακίνηση δεδομένων από μία θέση μνήμης στην άλλη quad-core i7 CPU Ερώτηση: Ξέρεις πως μετράμε την ταχύτητα ενός επεξεργαστή; Απάντηση: Ο ρυθμός-ρολογιού του επεξεργαστή μετράει πόσους κύκλους κάνει το δευτερόλεπτο. Σε ένα κύκλο μπορεί να κάνει μια βασική πράξη. 100MHz = 100 Million cycles per second, 1GHz = 1 Billion cycles per second.
7
Υλικό 2. Κύρια Μνήμη (RAM)
Τα φυσικά («χειροπιαστά») μέρη τα οποία συνθέτουν έναν υπολογιστή. 2. Κύρια Μνήμη (RAM) A DDR3 RAM Main Memory Μια μακριά λίστα από κελλιά μνήμης Address 1 Address 2 Κάθε κελλί έχει μια διεύθυνση (έναν αριθμό) που προσδιορίζει τη θέση του. Address 3 … 1 Κάθε κελλί μνήμης έχει 8 δυαδικά ψηφία (1 byte). … Ερώτηση: Ποιο είναι ένα τυπικό μέγεθος RAM σήμερα; Προσωρινή – τα δεδομένα στη μνήμη χάνονται (σβήνονται) με το κλείσιμο του υπολογιστή
8
Υλικό 2. Κύρια Μνήμη (RAM)
Τα φυσικά («χειροπιαστά») μέρη τα οποία συνθέτουν έναν υπολογιστή. 2. Κύρια Μνήμη (RAM) A DDR3 RAM Main Memory Μια μακριά λίστα από κελλιά μνήμης Address 1 Address 2 Κάθε κελλί έχει μια διεύθυνση (έναν αριθμό) που προσδιορίζει τη θέση του. Address 3 … 1 Κάθε κελλί μνήμης έχει 8 δυαδικά ψηφία (1 byte). … Ερώτηση: Ποιο είναι ένα τυπικό μέγεθος RAM σήμερα; Προσωρινή – τα δεδομένα στη μνήμη χάνονται (σβήνονται) με το κλείσιμο του υπολογιστή Απάντηση: 8GB DDR3 RAM, έχοντας 8,589,934,592 κελλιά μνήμης!
9
Υλικό 3. Δευτερεύουσα Μνήμη
Τα φυσικά («χειροπιαστά») μέρη τα οποία συνθέτουν έναν υπολογιστή. 3. Δευτερεύουσα Μνήμη A 3.5” Hard Disk Μόνιμη – η πληροφορία δεν χάνεται με το κλείσιμο του υπολογιστή. Για μόνιμη αποθήκευση πληροφορίας σε αρχεία. Π.χ., σκληρός δίσκος, DVD/CD, flash memory Flash hard drive External Hard Disk USB flash drive DVD/CD ROMs
10
Υλικό Τα φυσικά («χειροπιαστά») μέρη τα οποία συνθέτουν έναν υπολογιστή. 4. Περιφερειακά Συσκευές επικοινωνίας μεταξύ χρήστη και υπολογιστή. Συσκευές εισόδου Συσκευές εξόδου
11
Υλικό Επεξεργαστής (CPU) Συσκευές εισόδου γρήγορα Συσκευές εξόδου αργά
Συσκευές εισόδου γρήγορα Συσκευές εξόδου Κύρια Μνήμη αργά Δευτερεύουσα Μνήμη Ερώτηση: Πέραν του προσωπικού υπολογιστή, μπορείς να ξεχωρήσεις αυτά τα μέρη σε ένα κινητό ή tablet ή κονσόλα;
12
Υλικό Επεξεργαστής (CPU) Συσκευές εισόδου γρήγορα Συσκευές εξόδου αργά
Ipad 4 1.4 GHz dual-core Apple A6X 1024 MB 16, 32, or 64, 128 GB Touch screen, camera, mic…etc 9.7 inches retina display, touch screen iPhone5 A6 Dual core 1GB 16, 32 or 64 GB Touch screen, camera, mic…etc 4 inches retina display, touch screen Επεξεργαστής (CPU) Xbox360 Kinect Συσκευές εισόδου 3.2 GHz PowerPC Tri-Core Xenon Processor γρήγορα Main memory 512 MB Secondary memory Συσκευές εξόδου Up to 320 GB Κύρια Μνήμη Controller / Kinect (motion sensing) …etc Input device(s) Output device(s) Video output, Audio output, Controller αργά Δευτερεύουσα Μνήμη Ερώτηση: Πέραν του προσωπικού υπολογιστή, μπορείς να ξεχωρήσεις αυτά τα μέρη σε ένα κινητό ή tablet ή κονσόλα;
13
Πρόγραμμα Τι είναι ένα πρόγραμμα
Επεξεργαστής (CPU) Τι είναι ένα πρόγραμμα Συσκευές εισόδου Μία ακολουθία εντολών που σκοπό έχουν την εκτέλεση μιας συγκεκριμένης εργασίας στον υπολογιστή. γρήγορα Συσκευές εξόδου Κύρια Μνήμη αργά Δευτερεύουσα Μνήμη
14
Πρόγραμμα Όταν ένα πρόγραμμα εκτελείται
Επεξεργαστής (CPU) Όταν ένα πρόγραμμα εκτελείται 1) Το πρόγραμμα φορτώνεται στην κύρια μνήμη. Συσκευές εισόδου γρήγορα Συσκευές εξόδου Κύρια Μνήμη Compute 2+3=? αργά Δευτερεύουσα Μνήμη Compute 2+3=?
15
Πρόγραμμα Όταν ένα πρόγραμμα εκτελείται
Επεξεργαστής (CPU) Όταν ένα πρόγραμμα εκτελείται 1) Το πρόγραμμα φορτώνεται στην κύρια μνήμη. Συσκευές εισόδου Compute 2+3=5 2) Ο επεξεργαστής διαβάζει και εκτελεί τις εντολές, καθώς και τα δεδομένα από τη μνήμη. γρήγορα Συσκευές εξόδου Κύρια Μνήμη Compute 2+3=? αργά Δευτερεύουσα Μνήμη Compute 2+3=?
16
Πρόγραμμα Όταν ένα πρόγραμμα εκτελείται
Επεξεργαστής (CPU) Όταν ένα πρόγραμμα εκτελείται 1) Το πρόγραμμα φορτώνεται στην κύρια μνήμη. Συσκευές εισόδου Compute 2+3=5 2) Ο επεξεργαστής διαβάζει και εκτελεί τις εντολές, καθώς και τα δεδομένα από τη μνήμη. γρήγορα Συσκευές εξόδου Κύρια Μνήμη 3) Η έξοδος του προγράμματος μπορεί να γραφτεί στην κύρια μνήμη, στη δευτερεύουσα μνήμη ή σε συσκευή εξόδου. Compute 2+3=? αργά Δευτερεύουσα Μνήμη Compute 2+3=?
17
Πρόγραμμα Μία κοντινή ματιά στον επεξεργαστή
Επεξεργαστής (CPU) ]\ Επεξεργαστής (CPU) Μία κοντινή ματιά στον επεξεργαστή Μονάδα Ελέγχου (ΜΕ) – Εξάγει τις εντολές από τη μνήμη, τις αποκωδικοποιεί και τις εκτελέι. ΜΕ Συσκευές εισόδου γρήγορα Συσκευές εξόδου Κύρια Μνήμη αργά Δευτερεύουσα Μνήμη
18
Πρόγραμμα Μία κοντινή ματιά στον επεξεργαστή
Processer CPU Processer CPU Επεξεργαστής (CPU) Καταχωρητές (Registers) – Αποθηκεύουν τις εντολές/δεδομένα που εξάχθηκαν από τη μνήμη για γρήγορη επεξεργασία. Καταχωρητές Μονάδα Ελέγχου (ΜΕ) – Εξάγει τις εντολές από τη μνήμη, τις αποκωδικοποιεί και τις εκτελεί. ΜΕ Συσκευές εισόδου γρήγορα Συσκευές εξόδου Κύρια Μνήμη αργά Δευτερεύουσα Μνήμη
19
Πρόγραμμα Μία κοντινή ματιά στον επεξεργαστή
Επεξεργαστής (CPU) Processer CPU Επεξεργαστής (CPU) Καταχωρητές (Registers) – Αποθηκεύουν τις εντολές/δεδομένα που εξάχθηκαν από τη μνήμη για γρήγορη επεξεργασία. Καταχωρητές ΑΛΜ Μονάδα Ελέγχου (ΜΕ) – Εξάγει τις εντολές από τη μνήμη, τις αποκωδικοποιεί και τις εκτελεί. ΜΕ Συσκευές εισόδου γρήγορα Συσκευές εξόδου Main memory Κύρια Μνήμη Αριθμητική Λογική Μονάδα (ΑΛΜ) – Εκτελεί απλές αριθμητικές/λογικές πράξεις (AND/OR). Compute 2+3=? Ερώτηση: Η ΚΜΕ επεξεργάζεται δεδομένα και εντολές εκφρασμένες με «0» και «1». Πώς μπορεί να εκτελέσει ένα πρόγραμμα από μια γλώσσα προγραμματισμου; αργά Δευτερεύουσα Μνήμη
20
Πρόγραμμα Μία κοντινή ματιά στον επεξεργαστή
Επεξεργαστής (CPU) Επεξεργαστής (CPU) Μία κοντινή ματιά στον επεξεργαστή Καταχωρητές (Registers) – Αποθηκεύουν τις εντολές/δεδομένα που εξάχθηκαν από τη μνήμη για γρήγορη επεξεργασία. Καταχωρητές ΑΛΜ Μονάδα Ελέγχου (ΜΕ) – Εξάγει τις εντολές από τη μνήμη, τις αποκωδικοποιεί και τις εκτελεί. ΜΕ Συσκευές εισόδου γρήγορα Συσκευές εξόδου Main memory Κύρια Μνήμη Αριθμητική Λογική Μονάδα (ΑΛΜ) – Εκτελεί απλές αριθμητικές/λογικές πράξεις (AND/OR). Compute 2+3=? Ερώτηση: Η ΚΜΕ επεξεργάζεται δεδομένα και εντολές εκφρασμένες με «0» και «1», πώς μπορεί να εκτελέσει ένα πρόγραμμα από μια γλώσσα προγραμματισμου; αργά Δευτερεύουσα Μνήμη Απάντηση: Ένα μεταφραστικό εργαλείο μετατρέπει το πρόγραμμα στη γλώσσα μηχανής (“0” και “1”) της ΚΜΕ.
21
? Γλώσσες Προγραμματισμού Γλώσσα Μηχανής
Ο επεξεργαστής καταλαβαίνει μόνο γλώσσα μηχανής. Γλώσσα Μηχανής Συγκεκριμένες εντολές σε γλώσσα μηχανής εκτελούνται απευθείας στην κεντρική μονάδα επεξεργασίας. ? Γλώσσα μηχανής Ανθρώπινη γλώσσα Γράψε μου ένα πρόγραμμα που να υπολογίζει το άθροισμα 2 αριθμών.
22
Γλώσσες Προγραμματισμού
Γλώσσα χαμηλού επιπέδου ορισμένη από τον κατασκευαστή του επεξεργαστή. Γλώσσα Assembly Είναι διατυπωμένη σε δυαδική γλώσσα μηχανής για να εκτελεστεί από την ΚΜΕ. Γλώσσα μηχανής Γλώσσα Assembly LOAD A ADD B STORE C Ανθρώπινη γλώσσα Γράψε μου ένα πρόγραμμα που να υπολογίζει το άθροισμα 2 αριθμών.
23
Γλώσσες Προγραμματισμού
Θυμίζουν ανθρώπινη γλώσσα. Γλώσσες προγραμματισμού υψηλού επιπέδου Προγράμματα σε αυτές τις γλώσσες πρέπει να μεταφραστούν σε κώδικα μηχανής για να εκτελεστούν από την ΚΜΕ. Έχουν πιο περίπλοκες εντολές από αυτές της Assembly. Python C C++ Pascal COBOL Γλώσσα μηχανής Γλώσσα Assembly LOAD A ADD B STORE C Γλώσσα Προγραμματισμού # Python code C = A+B Ανθρώπινη γλώσσα Γράψε μου ένα πρόγραμμα που να υπολογίζει το άθροισμα 2 αριθμών.
24
Λογισμικό Τα προγράμματα που χρησιμοποιούνται ευρέως σε ένα υπολογιστικό σύστημα Λογισμικό σχετικό με τον προγραμματισμό: Λειτουργικό Σύστημα Κέλυφος Επεξεργαστής κειμένου Μεταφραστής ή Διερμηνέας Περιβάλλον Ανάπτυξης Λογισμικού
25
Λειτουργικό Σύστημα Χρήστης Εφαρμογές Δρα ως διαχειριστής. Ελέγχει και δεσμεύει τους υπολογιστικούς πόρους (π.χ., διάβασμα δεδομένων από το δίσκο, εκτέλεση προγραμμάτων). Λειτουργικό Σύστημα Παρέχει γραφικό περιβάλλον στους χρήστες για την εύκολη περάτωση εργασιών (π.χ., εκτύπωση, δικτύωση, διαχείριση αρχείων) Υλικό Mavericks
26
Κέλυφος - Command Prompt
Το κέλυφος (shell) ή το περιβάλλον γραμμής διαταγών (command prompt) επιτρέπει στους χρήστες να επικοινωνούν με το λειτουργικό, εισάγοντας εντολές. Στα Windows, το command prompt ενεργοποιείται πληκτρολογώντας “cmd” στη γραμμή εκκίνησης.
27
Επεξεργαστής κειμένου
Χρησιμοποιείται για να γράφουμε και να αλλάζουμε τον πηγαίο κώδικα ενός προγράμματος. Μπορεί να αναγνωρίσει και να χρωματίσει τα μέρη του προγράμματος. Δημοφιλείς επεξεργαστές κειμένου emacs vi pico UltraEdit Crimson TextWrangler Notepad++ Επεξεργαστής Κειμένου width = int(input("Width: ")) length = int(input("Length: ")) area = width*length print("Area: ", area) Πηγαίος κώδικας (area.py)
28
Μεταγλωττιστής Οι επεξεργαστές καταλαβαίνουν μόνο προγράμματα σε γλώσσα χαμηλού επιπέδου (απλές εντολές), που μπορεί να διαφέρουν ανάλογα τον υπολογιστή. Ο μεταγλωττιστής (compiler) είναι ένα πρόγραμμα που μεταφράζει αυτόματα πηγαίο κώδικα υψηλού επιπέδου (π.χ. C++) σε γλώσσα μηχανής, ώστε ο υπολογιστής να μπορεί να τον εκτελέσει. Επεξεργαστής Κειμένου #include <iostream> … int main ( ) { int width = 5; int height = 10; int area = width * height; cout << “Area is “ << area; return 0; } Δυαδικός Κώδικας (Γλώσσα Μηχανής) (π.χ. area.o) Compiler Πηγαίος κώδικας (area.cpp)
29
Μεταγλωττιστής Το αποτέλεσμα της μεταγλώττισης πολλές φορές δεν είναι το βέλτιστο αφου η διαδικασία είναι μηχανιστική. Είναι όμως εντυπωσιακά καλό και πολλές φορές καλύτερο από τον κώδικα μηχανής που θα έγραφε ένας προγραμματιστής. Επεξεργαστής Κειμένου #include <iostream> … int main ( ) { int width = 5; int height = 10; int area = width * height; cout << “Area is “ << area; return 0; } Απευθείας προγραμματισμός σε γλώσ-σα μηχανής είναι εξαιρετικά δύσκολος. Δυαδικός Κώδικας (Γλώσσα Μηχανής) (π.χ. area.o) Compiler Πηγαίος κώδικας (area.cpp)
30
Συνδετής Ένα πρόγραμμα μπορεί να χρησιμοποιεί κομμάτια κώδικα (βιβλιοθήκες) που έχουν γραφτεί από άλλους (π.χ. μαθ. συναρτήσεις) Ο συνδετής (linker) είναι ένα πρόγραμμα που συνδέει ένα ή περισσότερα αρχεία (μεταγλωττισμένου) μηχανικού κώδικα σε ένα εκτελέσιμο πρόγραμμα Επεξεργαστής Κειμένου #include <iostream> … int main ( ) { int width = 5; int height = 10; int area = width * height; cout << “Area is “ << area; return 0; } Linker Εκτελέσιμο (π.χ. area.exe) Library (π.χ. iostream.o) Δυαδικός Κώδικας (Γλώσσα Μηχανής) (π.χ. area.o) Compiler Πηγαίος κώδικας (area.cpp)
31
Διερμηνέας Κάποιες γλώσσες προγραμματισμού (π.χ. Python) δεν έχουν μεταγλωττιστή, αλλά διερμηνέα (interpreter). Ο διερμηνέας μεταφράζει και εκτελεί ένα πρόγραμμα, εντολή προς εντολή Επεξεργαστής Κειμένου Πλεονέκτημα: γρηγορότερη παραγωγή και έλεγχος πηγαίου κώδικα Μειονέκτημα: το τελικό πρόγραμμα είναι συνήθως πιο αργό width = int(input("Width: ")) length = int(input("Length: ")) area = width*length print("Area: ", area) Πηγαίος κώδικας (area.py) Interpreter width = int(input("Width: ")) μεταγλώττιση και εκτέλεση
32
Πηγαίος κώδικας (area.cpp)
Ολοκληρωμένο Περιβάλλον Ανάπτυξης Λογισμικού Ένα Ολοκληρωμένο Περιβάλλον Ανάπτυξης Λογισμικού (Integrated Development Environment - IDE) ενοποιεί τα βήματα ανάπτυξης ενός προγράμ- ματος (επεξεργασία κειμένου, μετα- γλώττιση, εκσφαλμάτωση) IDE Editor Π.χ., IDLE (Python), Eclipse #include <iostream> … int main ( ) { int width = 5; int height = 10; int area = width * height; cout << “Area is “ << area; return 0; } Linker Εκτελέσιμο Library (π.χ. area.exe) Library Library Object code (Machine language ) Compiler (πχ. iostream.o) (π.χ. area.o) Πηγαίος κώδικας (area.cpp)
33
Παράδειγμα προγράμματος Python
σχόλιο συνάρτηση αρχικοποίησης ακεραίου # sample Python program # computes the area of a rectangle width = int(input("Width: ")) length = int(input("Length: ")) area = width*length print("Area: ", area) area.py συνάρτηση εισόδου από το χρήστη μεταβλητή/ αντικείμενο αλφαριθμητική σταθερά συνάρτηση εξόδου στην οθόνη
34
Έλεγχος και Εκσφαλμάτωση
Το σφάλμα σε ένα πρόγραμμα λέγεται bug (ζωύφιο). Ένα πρόγραμμα που γράφουμε είναι πιο πιθανό να έχει bugs από το να μην έχει. Η κυριότερη αιτία ενός bug είναι η απροσεξία του προγραμματιστή. Ακόμα και ο πιο έμπειρος προγραμματιστής κάνει σφάλματα Κατ’ αναλογία, ακόμα κι ο πιο έμπειρος συντάκτης κάνει γραμματικά και συντακτικά λάθη.
35
Τύποι Σφαλμάτων Συντακτικά λάθη (syntax errors)
Λάθη κατά την εκτέλεση (run-time errors) Λογικά σφάλματα
36
Πηγαίος κώδικας (area.py)
Συντακτικά λάθη Εντοπίζονται από το μεταγλωττιστή/διερμηνέα ή τον συντακτικό αναλυτή (parser) Διορθώνονται εύκολα width = int(input("Width: ")) length = int(input("Length: ")) area = width*legth print("Area: ", area) Πηγαίος κώδικας (area.py) Interpreter Traceback (most recent call last): File "area.py", line 3, in <module> area = width*legth NameError: name 'legth' is not defined
37
Πηγαίος κώδικας (area2.py)
Λάθη κατά την εκτέλεση Συμβαίνουν κατά την εκτέλεση του προγράμματος και όχι πάντα. Τυπικό σφάλμα: διαίρεση με το 0 area = int(input("Area: ")) length = int(input("Length: ")) width = area/length print("Width: ", width) Πηγαίος κώδικας (area2.py) Interpreter Area: 10 Length: 0 Traceback (most recent call last): File "area2.py", line 3, in <module> width = area/length ZeroDivisionError: division by zero
38
Πηγαίος κώδικας (area.py)
Λογικά σφάλματα Λογικά λάθη στο πρόγραμμα: το πρόγραμμα δεν κάνει την επιθυμητή λειτουργία ή παράγει λάθος αποτελέσματα Ο πονοκέφαλος του προγραμματιστή: συνήθως είναι δύσκολο να βρεθούν width = int(input("Width: ")) length = int(input("Length: ")) area = width+length print("Area: ", area) Πηγαίος κώδικας (area.py) Interpreter Width: 5 Length: 2 Area: 7
39
Ανάπτυξη Προγράμματος
Βήμα 1: Σχεδιασμός Κατανόηση των απαιτήσεων (τι θέλουμε να κάνουμε;) Αναγνώριση της εισόδου και της επιθυμητής εξόδου του προγράμματος Σχεδιασμός ενός αλγορίθμου που λύνει το πρόβλημα Βήμα 2: Υλοποίηση Μετατροπή του αλγορίθμου στη γλώσσα προγραμματισμού Μεταγλώττιση/Διερμηνεία για εντοπιστό τυχόν συντακτικών λαθών Εκτέλεση του προγράμματος δίνοντας ως είσοδο δεδομένα με τα οποία μπορούμε να ελεγξουμε τυχόν σφάλματα κατα την εκτέλεση και λογικά λάθη
40
Παράδειγμα Προδιαγραφές προβλήματος:
Μία κατασκευαστική εταιρία παρέχει μια υπηρεσία δόμησης σκάλας με λίθινες ράβδους για τους πελάτες της. Υποθέστε ότι κάθε ράβδος έχει 30 εκ. ύψος και το κόστος μιας ράβδου είναι 10€. Ζητείται ένα πρόγραμμα που να υπολογίσει το κόστος κατασκευής μιας σκάλας ύψους χ εκ. 30 30€ 60€ 10€ 60 90 κόστος ύψος
41
Παράδειγμα Προδιαγραφές προβλήματος:
Μία κατασκευαστική εταιρία παρέχει μια υπηρεσία δόμησης σκάλας με λίθινες ράβδους για τους πελάτες της. Υποθέστε ότι κάθε ράβδος έχει 30 εκ. ύψος και το κόστος μιας ράβδου είναι 10€. Ζητείται ένα πρόγραμμα που να υπολογίσει το κόστος κατασκευής μιας σκάλας ύψους χ εκ. Ερώτηση: Ποια είναι η είσοδος και η έξοδος του προγράμματος μας; Απάντηση: 1) Ο χρήστης θα ορίσει το επιθυμητό ύψος χ της σκάλας 2) Το κόστος κάθε ράβδου είναι 10€ 3) Το ύψος κάθε ράβδου είναι 30 εκ. 4) Ζητούμενο (έξοδος) είναι το κόστος μιας σκάλας χ εκατοστών. 30 30€ 60€ 10€ 60 90 κόστος ύψος
42
Παράδειγμα Προδιαγραφές προβλήματος:
Μία κατασκευαστική εταιρία παρέχει μια υπηρεσία δόμησης σκάλας με λίθινες ράβδους για τους πελάτες της. Υποθέστε ότι κάθε ράβδος έχει 30 εκ. ύψος και το κόστος μιας ράβδου είναι 10€. Ζητείται ένα πρόγραμμα που να υπολογίσει το κόστος κατασκευής μιας σκάλας ύψους χ εκ. Τώρα, σχεδίασε έναν αλγόριθμο που να λύνει το πρόβλημά μας! ΙΔΕΑ : 1) Διαιρώ το χ με 30 για να πάρω το ύψος υ της σκάλας σε ράβδους 2) Χρειάζομαι υ ράβδους! 3) Το κόστος είναι ( υ)*10! 30 30€ 60€ 10€ 60 90 κόστος ύψος
43
Παράδειγμα Προδιαγραφές προβλήματος:
Μία κατασκευαστική εταιρία παρέχει μια υπηρεσία δόμησης σκάλας με λίθινες ράβδους για τους πελάτες της. Υποθέστε ότι κάθε ράβδος έχει 30 εκ. ύψος και το κόστος μιας ράβδου είναι 10€. Ζητείται ένα πρόγραμμα που να υπολογίσει το κόστος κατασκευής μιας σκάλας ύψους χ εκ. Τώρα, γράψε το πρόγραμμα! x = int(input("Required height (in cm): ")) import math u = math.ceil(x/30) numrods = 0 for i in range(1,u+1): numrods = numrods+i cost = numrods*10 print("The cost is: ", cost) 30 30€ 60€ 10€ 60 90 κόστος ύψος
44
Παράδειγμα ✔ Προδιαγραφές προβλήματος:
Μία κατασκευαστική εταιρία παρέχει μια υπηρεσία δόμησης σκάλας με λίθινες ράβδους για τους πελάτες της. Υποθέστε ότι κάθε ράβδος έχει 30 εκ. ύψος και το κόστος μιας ράβδου είναι 10€. Ζητείται ένα πρόγραμμα που να υπολογίσει το κόστος κατασκευής μιας σκάλας ύψους χ εκ. Μπορούμε να κάνουμε το πρόγραμμα πιο γρήγορο; x = int(input("Required height (in cm): ")) import math u = math.ceil(x/30) numrods = int((u*(u+1))/2) cost = numrods*10 print("The cost is: ", cost) 30 30€ 60€ 10€ 60 90 κόστος ύψος ✔
45
Ένα καλό πρόγραμμα Είναι οπωσδήποτε σωστό! Είναι γρήγορο
Είναι καλογραμμένο και εύκολο να επαναχρησιμοποιηθεί και να αλλαχθεί
46
Πρότυπα Προγραμματισμού
Διαδικαστικός (Δομημένος) Προγραμματισμός Πρόγραμμα σε μεταβλητές, δομές, συναρτήσεις Pascal, C Αντικειμενοστρεφής Προγραμματισμός Πρόγραμμα βασισμένο σε αντικείμενα C++, Java, Python Συναρτησιακός Προγραμματισμός Πρόγραμμα σαν μαθηματικές συναρτήσεις Lisp, Haskel, Erlang, Scala Λογικός Προγραμματισμός Prolog
47
Φιλοσοφία του Μαθήματος
Εκμάθηση βασικών αρχών και φιλοσοφίας του προγραμματισμού με την Python Έμφαση στα βασικά στοιχεία της Python που είναι κοινά και σε άλλες γλώσσες (π.χ. C, Java) Ομαλή μετάβαση στο μάθημα «Τεχνικές Αντικειμενοστρεφούς Προγραμματισμού» του εαρινού εξαμήνου
48
Γιατί Python; Εξαιρετικά δημοφιλής γλώσσα
Εύκολη και γρήγορη ανάπτυξη εφαρμογών Υπάρχει διαθέσιμος μεγάλος όγκος ελεύθερου λογισμικού (προγράμματα και βιβλιοθήκες) Χρησιμοποιείται και στην ανάπτυξη εμπορικών εφαρμογών Μαθαίνοντάς την, μαθαίνουμε στοιχεία διαδικαστικού και αντικειμενοστρεφούς προγραμματισμού
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.