Προγραμματισμός Ι - University of Thessaly...Γλώσσα...

28
Προγραμματισμός Ι

Transcript of Προγραμματισμός Ι - University of Thessaly...Γλώσσα...

Page 1: Προγραμματισμός Ι - University of Thessaly...Γλώσσα προγραμματισμού Γλώσσα μηχανής 0110110001101 Διεύθυνση εντολή Συμβολική

Προγραμματισμός Ι

Page 2: Προγραμματισμός Ι - University of Thessaly...Γλώσσα προγραμματισμού Γλώσσα μηχανής 0110110001101 Διεύθυνση εντολή Συμβολική

Εισαγωγή

● Σκοπός του μαθήματος– Εισαγωγή στην επιστήμη των Η/Υ– Εισαγωγή στον προγραμματισμό– Μεθοδολογία αλγοριθμικής επίλυσης προβλημάτων– Χρήση της γλώσσας προγραμματισμού python

Page 3: Προγραμματισμός Ι - University of Thessaly...Γλώσσα προγραμματισμού Γλώσσα μηχανής 0110110001101 Διεύθυνση εντολή Συμβολική

Εισαγωγή

● Αλόριθμος– Πεπερασμένη ακολουθία ενεργειών που περιγράφη τον τρόπο

επίλυσης ενός προβλήματος.– Εφαρμόζεται σε δεδομένα

● Πρόγραμμα– Ακριβής περιγραφή ενός αλγορίθμου σε τυπική γλώσσα που

ονομάζεται γλώσσα προγραμματισμού

Page 4: Προγραμματισμός Ι - University of Thessaly...Γλώσσα προγραμματισμού Γλώσσα μηχανής 0110110001101 Διεύθυνση εντολή Συμβολική

Εισαγωγή

● Φυσική γλώσσα– Χωρίς τόσο αυστηρούς συνακτικούς περιορισμούς– Μεγάλη πυκνότητα και σημασιολογική ικανότητα

● Τεχνητή γλώσσα– Αυστηρότατη σύνταξη και σημασιολογία

Page 5: Προγραμματισμός Ι - University of Thessaly...Γλώσσα προγραμματισμού Γλώσσα μηχανής 0110110001101 Διεύθυνση εντολή Συμβολική

Εισαγωγή

● Γλώσσα προγραμματισμού– Τεχνητή γλώσσα στην οποία μπορούν να περιγραφούν

υπολογισμοί– Εκτελέσιμη από έναν ηλεκτρονικό υπολογιστή

Page 6: Προγραμματισμός Ι - University of Thessaly...Γλώσσα προγραμματισμού Γλώσσα μηχανής 0110110001101 Διεύθυνση εντολή Συμβολική

Εισαγωγή

● Πληροφορική

● Κεντρική έννοια– Υπολογισμός

Ηλεκτρονικοίυπολογιστές Μαθηματικά

Page 7: Προγραμματισμός Ι - University of Thessaly...Γλώσσα προγραμματισμού Γλώσσα μηχανής 0110110001101 Διεύθυνση εντολή Συμβολική

Εισαγωγή

● Κατασκευή υπολογιστικών μηχανών– Αρχαιότητα: υπολογιστικές μηχανές, μηχανισμός των

αντικυθήρων κτλ.– 17ος αιώνας, Pascal – Leibniz, μηχανικές υπολογιστικές μηχανές,

στοιχειώδεις αριθμητικές πράξεις– Μέσα του 19ος αιώνα, Babbage, αναλυτικές μηχανές, υπολογισμό

λογαρίθμου και τριγωνομετρικές συναρτήσεις– Τέλη του 19ος αιώνα, Hollerith, μηχανή με διάτρητες κάρτες

Page 8: Προγραμματισμός Ι - University of Thessaly...Γλώσσα προγραμματισμού Γλώσσα μηχανής 0110110001101 Διεύθυνση εντολή Συμβολική

Εισαγωγή

● Κατασκευή υπολογιστών– 1940, Zuse, ψηφιακή ηλεκτρονική υπολογιστική μηχανή, όπου

το πρόγραμμα και τα δεδομένα ήταν χωριστά– 1950, Von Neumann, μοντέλο του σύγχρονου Η/Υ, – 1950 – σήμερα, ραγδαία εξέλιξη της τεχνολογίας των

ηλεκτρονικών υπολογιστών

Page 9: Προγραμματισμός Ι - University of Thessaly...Γλώσσα προγραμματισμού Γλώσσα μηχανής 0110110001101 Διεύθυνση εντολή Συμβολική

Εισαγωγή

● Θεμέλια της πληροφορικής– Μαθηματική λογική– Συλλογισμοί: Αριστοτέλης

Α→Β, Α Β (modus ponens)– Ευκλείδης: Αξιωματική θεωρία– Αρχές 20ου αιώνα, Hilbert, αξίωμα → θεώρημα → τυπική

απόδειξη

Page 10: Προγραμματισμός Ι - University of Thessaly...Γλώσσα προγραμματισμού Γλώσσα μηχανής 0110110001101 Διεύθυνση εντολή Συμβολική

Εισαγωγή

● Θεμελίωση των μαθηματικών– Γλώσσα– Θεωρία– Συνεπής – πλήρης

A A

Page 11: Προγραμματισμός Ι - University of Thessaly...Γλώσσα προγραμματισμού Γλώσσα μηχανής 0110110001101 Διεύθυνση εντολή Συμβολική

Εισαγωγή

● Γλώσσα

– Προτασιακός λογισμός x, c, , , , , – Κατηγορηματικός λογισμός ,

● Θεωρία

– Συνολοθεωρία, Cantor – Frege– Παράδοξο του Russel– Άλλες θεωρίες θεμελίωσης των μαθηματικών

Page 12: Προγραμματισμός Ι - University of Thessaly...Γλώσσα προγραμματισμού Γλώσσα μηχανής 0110110001101 Διεύθυνση εντολή Συμβολική

Εισαγωγή

● Κλάδοι της πληροφορικής– Αλγόριθμοι και δομές δεδομένων– Γλώσσες προγραμματισμού– Αριθμητική και συμβολικοί υπολογισμοί– Τεχνητή νοημοσύνη και ρομποτική– Λειτουργικά συστήματα

Page 13: Προγραμματισμός Ι - University of Thessaly...Γλώσσα προγραμματισμού Γλώσσα μηχανής 0110110001101 Διεύθυνση εντολή Συμβολική

Εισαγωγή

● Υπολογιστής– Επεξεργαστή– Μνήμα– Συσκευές εισόδου/εξόδου

● Ιδιότητες– Αυτόματο, χωρίς έμφυτη εξυπνάδα– Μεγάλη ταχύτητα– Ακρίβεια στις πράξεις

Page 14: Προγραμματισμός Ι - University of Thessaly...Γλώσσα προγραμματισμού Γλώσσα μηχανής 0110110001101 Διεύθυνση εντολή Συμβολική

Γλώσσα προγραμματισμού

Ο προγραμματιστής:● Αλληλεπιδρά με το υλικό Η/Υ● Αναπτύσσει – τροποποεί – αναβαθμίζει – συντηρεί ένα

λογισμικό● Η γλώσσες προγραμματισμού αποτελούν το εργαλείο

αυτό

Page 15: Προγραμματισμός Ι - University of Thessaly...Γλώσσα προγραμματισμού Γλώσσα μηχανής 0110110001101 Διεύθυνση εντολή Συμβολική

Γλώσσα προγραμματισμού

● Μέσω επικοινωνίας μεταξύ του ανθρώπου και της μηχανής– Ο Η/Υ εκτελεί τις πράξεις της πρόσθεσης και του

πολλαπλασιασμού– Όλες οι πράξεις γίνονται με συνδιασμό των παραπάνω

● Η γλώσσα μηχανής– Δύσκολη από την άνθρωπο– Απαιτεί μεγάλο χρόνο εκπαιδευσης

Page 16: Προγραμματισμός Ι - University of Thessaly...Γλώσσα προγραμματισμού Γλώσσα μηχανής 0110110001101 Διεύθυνση εντολή Συμβολική

Γλώσσα προγραμματισμού

● Γλώσσα μηχανής● 0110110001101● Διεύθυνση εντολή

● Συμβολική γλώσσα● Label:add ax, bx

Διεύθυνση πράξη δεδομένα

● Γλώσσες υψηλού επιπέδου

Page 17: Προγραμματισμός Ι - University of Thessaly...Γλώσσα προγραμματισμού Γλώσσα μηχανής 0110110001101 Διεύθυνση εντολή Συμβολική

Οι γλώσσες υψηλού επιπέδου:● Ενδιάμεσω επίπεδο με την εφαρμοφή και την γλώσσα

μηχανής● Κάνουν τον προγραμματισμό εύχρηστο, μειώνοντας το

κόστος ανάπτυξης των εφαρμογών● Μπορούν να εκτελεστούν σε διαφορετικές μηχανές

Ένα πρόγραμμα μέσα στο οποία γράφετε ένα άλλο πρόγραμα

Page 18: Προγραμματισμός Ι - University of Thessaly...Γλώσσα προγραμματισμού Γλώσσα μηχανής 0110110001101 Διεύθυνση εντολή Συμβολική

Μεταγλωτιστής

Page 19: Προγραμματισμός Ι - University of Thessaly...Γλώσσα προγραμματισμού Γλώσσα μηχανής 0110110001101 Διεύθυνση εντολή Συμβολική

Διερμηνευτής

Page 20: Προγραμματισμός Ι - University of Thessaly...Γλώσσα προγραμματισμού Γλώσσα μηχανής 0110110001101 Διεύθυνση εντολή Συμβολική

Γλώσσα προγραμματισμού

● Οι γλώσσες που χρησιμοποιούν μεταγλωτιστή είναι πολύ γρηγορότερες σε σχέση με τις γλώσσες που χρησιμοποιούν διερμηνευτή (C/C++, C#, FORTRAN))

● Οι γλώσσες που βασίζονται στον διερμηνευτή μπορούν να είναι περισσότερο διαδραστηκές και ο χρήστης να κάνει περισσότερους ελεγχους (Python, Prolog, JAVA, BASIC)

Page 21: Προγραμματισμός Ι - University of Thessaly...Γλώσσα προγραμματισμού Γλώσσα μηχανής 0110110001101 Διεύθυνση εντολή Συμβολική

Σφάλματα προγραμματισμού

● Συντακτικά σφάλματα

Ανιχνεύονται από τον compiler/interpreter● Σφάλματα κατά την εκτέλεση

Ανιχνεύονται από τον interpreter● Σφάλματα λογικής

Ανιχνεύονται από τον προγραμματιστή

Page 22: Προγραμματισμός Ι - University of Thessaly...Γλώσσα προγραμματισμού Γλώσσα μηχανής 0110110001101 Διεύθυνση εντολή Συμβολική

Διαχωρισμός Γλωσσών

● Γλώσσες χαμηλού επιπέδου οι γλώσσες που είναι πιο κοντά στη γλώσσα μηχανής (BASIC)

Δομημένος Προγραμματισμός

Αντικειμενοστραφείς Προγραμματισμός

● C● Pascal● FORTRAN)

● C++● C#● JAVA● Python

Page 23: Προγραμματισμός Ι - University of Thessaly...Γλώσσα προγραμματισμού Γλώσσα μηχανής 0110110001101 Διεύθυνση εντολή Συμβολική

Διαχωρισμός Γλωσσών

Δομημένος Προγραμματισμός Αντικειμενοστραφείς Προγραμματισμός

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

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

Page 24: Προγραμματισμός Ι - University of Thessaly...Γλώσσα προγραμματισμού Γλώσσα μηχανής 0110110001101 Διεύθυνση εντολή Συμβολική

Python

● Αναπτύχθηκε από τον Ολλανδό Guido van Rossum● στις αρχές της δεκαετίας του '90: Python 0.9.0 – February

1991● Python 2.0 – Οκτώμβριο, 2000● Python 3.0 – Δεκέμβριο, 2008 ● Υποστηρίζεται από πλήθος προγραμματιστών και

οργανισμών, είναι γλώσσα ανοιχτού κώδικα

Ιστορικά είναι η πρώτη γλώσσα προγραμματισμού που σπάει την προς τα πίσω συμβατότητα με προηγούμενες εκδόσεις.

Page 25: Προγραμματισμός Ι - University of Thessaly...Γλώσσα προγραμματισμού Γλώσσα μηχανής 0110110001101 Διεύθυνση εντολή Συμβολική

Python

● Γλώσσα προγραμματισμού υψηλού επιπέδου● Υποστηρίζει Αντικειμενοστραφή και Διαδικαστικό

Προγραμματισμό● Interpreted κατά το run-time (very high-level language)● Εκτελείται:

– Είτε ανά εντολή (στο Python Shell)– Είτε σαν πλήρες αρχείο προγράμματος με κατάληξη .py

Page 26: Προγραμματισμός Ι - University of Thessaly...Γλώσσα προγραμματισμού Γλώσσα μηχανής 0110110001101 Διεύθυνση εντολή Συμβολική

Python

● Δυναμική γλώσσα στον ορισμό τύπου των μεταβλητών● Εύκολη στην σύνταξη και στην εκμάθηση, κατανόηση,

ανάγνωση● Υποχρεωτικό Indentation, όχι μόνο για μορφοποίηση● Δημιουργία μικρότερων σε μέγεθος προγραμμάτων σε

σχέση με άλλες γλώσσες προγραμματισμού● Πληθώρα IDEs: IDLE, IPython, PythonAnywhere

Page 27: Προγραμματισμός Ι - University of Thessaly...Γλώσσα προγραμματισμού Γλώσσα μηχανής 0110110001101 Διεύθυνση εντολή Συμβολική

Πρόγραμμα σε Python

print('Hello word!')

x = 99

print(x)

---------------------------------------------------------------------------------------------------------------# Get the user's first name.

first_name = input('Please give your first name: ')

---------------------------------------------------------------------------------------------------------------# Get the user's last name.

last_name = input('Please give your last name: ')

---------------------------------------------------------------------------------------------------------------# Print a greeting to the user.

print('Hello', first_name, last_name)

Page 28: Προγραμματισμός Ι - University of Thessaly...Γλώσσα προγραμματισμού Γλώσσα μηχανής 0110110001101 Διεύθυνση εντολή Συμβολική

Πρόγραμμα σε Python

● Διαδραστική Λειτουργία– Εκκινώντας το Python

Python 3.2.5 (default, May 15 2013, 23:07:10) [MSC v.1500 64 bit

(AMD64)] on win32

Type "copyright", "credits" or "license()" for more information.

>>>

– Και με συγγραφή εντολής μετά το >>> και Entrer αυτή διερμηνεύεται και εκτελείται

– Πριν εκτελεστεί κάποια εντολή ελέγχεται για συντακτικά σφάλματα