Εισαγωγή στον Προγραμματισμό Μάθημα 4: Αλγόριθμοι και Γλώσσες Προγραμματισμού Δεκέμβριος 2015 Χ. Αλεξανδράκη

Σχετικά έγγραφα
Εισαγωγή στον Προγραμματισμό Python Μάθημα 1: Μεταβλητές, τελεστές, είσοδος/έξοδος προγράμματος, συνθήκη ελέγχου if Νοέμβριος 2014 Χ. Αλεξανδράκη, Γ.

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ

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

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

Πληροφορική 2. Αλγόριθμοι

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

ΛΟΓΙΚΑ ΔΙΑΓΡΑΜΜΑΤΑ. Γ Λυκείου Κατεύθυνσης Mike Trimos

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

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

Θέματα Προγραμματισμού Η/Υ

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

ΑΕΠΠ Ερωτήσεις θεωρίας

Είναι μια αλληλουχία κατάλληλων οδηγιών(εντολών) που εκτελεί ο υπολογιστής για την επίλυση ενός προβλήματος.

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Πληροφορική 2. Γλώσσες Προγραμματισμού

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΑ ΣΥΣΤΗΜΑΤΑ

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΥΠΟΛΟΓΙΣΤΩΝ

Κεφάλαιο 10 ο Υποπρογράµµατα

Γλώσσες υψηλού επιπέδου Περιέχουν περισσότερες εντολές για την εκτέλεση πολύπλοκων εργασιών Τα προγράµµατα µεταφράζονται σε γλώσσα µηχανής είτε από το

Μάριος Αγγελίδης Ενότητες βιβλίου: 2.1, 2.3, 6.1 (εκτός ύλης αλλά χρειάζεται για την συνέχεια) Ώρες διδασκαλίας: 1

ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Προγραμματισμός

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Υπολογισμός - Εντολές Επανάληψης

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Εισαγωγή στην Πληροφορική

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

Ας δούμε λίγο την θεωρία με την οποία ασχοληθήκαμε μέχρι τώρα.

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

Εισαγωγή στη γλώσσα προγραμματισμού C++14

Ο αλγόριθμος πρέπει να τηρεί κάποια κριτήρια

Εισαγωγή στην Πληροφορική

Α. Ερωτήσεις Ανάπτυξης

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Υπολογιστές Ι. Άδειες Χρήσης. Εισαγωγή. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

Εισαγωγή στην Έννοια του Αλγορίθμου και στον Προγραμματισμό. Η έννοια του προβλήματος

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω:

Προγραμματισμός Η/Υ. Ενότητα 3: Top Down Σχεδιασμός

Μαλούτα Θεανώ Σελίδα 1

Βήματα: μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων. Δομές Δεδομένων + Αλγόριθμοι = Προγράμματα

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει τρία εξίσου σημαντικά στάδια.

Πρόβλημα 37 / σελίδα 207

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.

Απλά Προγράμματα. Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τα επιμέρους τμήματα Η ΟΜΗ TOY ΥΠΟΛΟΓΙΣΤΗ. Αναπαράσταση μεγεθών. Αναλογική αναπαράσταση ΚΕΝΤΡΙΚΗ ΜΝΗΜΗ ΜΟΝΑ Α ΕΛΕΓΧΟΥ

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Προγραμματισμός

ΑΛΓΟΡΙΘΜΟΙ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

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

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 2 : Αλγόριθμοι. Δρ. Γκόγκος Χρήστος

Ψευδοκώδικας. November 7, 2011

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ )

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

Προγραµµατισµός Η/Υ. Μέρος2

Αρχές Προγραμματισμού Υπολογιστών

Περιεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΠΑΝΕΛΛΑ ΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ (ΟΜΑ Α Β ) ΚΑΙ ΜΑΘΗΜΑΤΩΝ ΕΙ ΙΚΟΤΗΤΑΣ

Αντικειµενοστρεφής Προγραµµατισµός

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης

Εισαγωγή στην Πληροφορική Προγραμματισμός-Λειτουργικά

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

2.1 Αντικειµενοστρεφής προγραµµατισµός

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Διάρκεια 3 ώρες. Όνομα... Επώνυμο... Βαθμός...

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Εισαγωγή στην επιστήμη των υπολογιστών

Προγραμματισμός και Εφαρμογές Υπολογιστών

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

6. Εισαγωγή στον προγραµµατισµό

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω:

Κεφάλαιο 1 Προγραμματισμός Υπολογιστή. Εφαρμογές Πληροφορικής Κεφ. 7 Καραμαούνας Πολύκαρπος 1

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07

Προγραμματισμός Η/Υ. Αλγόριθμοι. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Εισαγωγή στις Αρχές της επιστήμης των ΗΥ

Transcript:

Εισαγωγή στον Προγραμματισμό Μάθημα 4: Αλγόριθμοι και Γλώσσες Προγραμματισμού Δεκέμβριος 2015 Χ. Αλεξανδράκη

Αλγόριθμος (τι είναι) Στα μαθηματικά και την επιστήμη ΗΥ Ο αλγόριθμος είναι η λογική διαδικασία που πρέπει να ακολουθηθεί για την επίλυση ενός προβλήματος, όπου Η διαδικασία αναλύεται σε ένα σύνολο από βήματα Ο αριθμός το βημάτων είναι πεπερασμένος!

Παράδειγμα (αλγοριθμικών) προβλημάτων Δεδομένου ενός συνόλου από αριθμούς: Βρες το μέγιστο Βρες το ελάχιστο Βρες το μέσο όρο Βρες τον κοινό παρανομαστή Ταξινόμησέ τους σε αύξουσα (ή φθίνουσα σειρά)

Σχεδιασμός αλγορίθμων Γενικά υπάρχουν δύο τρόποι για να ορίσουμε έναν αλγόριθμο: Ψευδο-κώδικας (Pseudo-code) Η καταγραφή των βημάτων σε ανθρώπινη γλώσσα Διαγράμματα ροής (Flow charts) Η αναπαράσταση των βημάτων με σύμβολα

Συστατικά Αλγορίθμου 1. Αρχή & Τέλος ΑΡΧΗ ΤΕΛΟΣ 2. Είσοδος/Έξοδος Δεδομένων Διάβασε Ν 3. Εκτέλεση Πράξεων/ Εντολές n=n*i 4. Έλεγχος Συνθήκης i <= Ν

Δομές Ελέγχου (1/2) Βάσει του Θεωρήματος Δομημένου Προγραμματισμού ή Θεωρήματος Böhm-Jacopini, ο αλγόριθμος οποιουδήποτε επιλύσιμου προβλήματος μπορεί να αναλυθεί σε συνδυασμό μικρότερων βημάτων με τρεις δομές ελέγχου (control structures) : Ακολουθία (sequence) Εκτέλεση βήματος το ένα μετά το άλλο Απόφαση (selection) Εκτέλεση βήματος κατ επιλογήν, δηλαδή εφόσον ισχύει κάποια συνθήκη (if-else) Επανάληψη (iteration) Εκτέλεση βήματος κατ επανάληψη (for, while)

Δομές Ελέγχου (2/2)

Απόφαση ΔΟΜΗ IF ΔΟΜΗ IF-ELSE

Επανάληψη ΔΟΜΗ FOR Χρησιμοποιείται όταν γνωρίζουμε τον αριθμό των επαναλήψεων ΔΟΜΗ WHILE Χρησιμοποιείται όταν ο αριθμός των επαναλήψεων εξαρτάται από μια συνθήκη

Παράδειγμα Αλγορίθμου Να βρεθεί και να εκτυπωθεί το άθροισμα των Ν ακεραίων από το 1 μέχρι το Ν, δεδομένου του Ν

Επίλυση με ψευδο-κώδικα Αλγόριθμος ΆθροισμαΝ Διάβασε Ν Sum <- 0 Για i από 1 έως N Sum <- Sum +i Τέλος Επανάληψης Εκτύπωσε Sum Tέλος ΆθροισμαΝ

Επίλυση με διάγραμμα ροής ΑΡΧΗ Αρχή, τέλος αλγόριθμου Διάβασε Ν Είσοδος έξοδος δεδομένων i 1 sum 0 Εκτέλεση πράξεων, επεξεργασία i <= Ν NAI sum sum + i i i + 1 Έλεγχος ροής OXI Εκτύπωσε sum ΤΕΛΟΣ

Πολυπλοκότητα Αλγορίθμων Η πολυπλοκότητα ενός αλγορίθμου ορίζεται ως ο χρόνος (επεξεργασία) και ο χώρος (μνήμη) που απαιτείται ως συνάρτηση του πλήθους των δεδομένων εισόδου (n)! Πολυπλοκότητα Ο(n*n) σημαίνει ότι για διπλάσιο πλήθος δεδομένων εισόδου ο χρόνος εκτέλεσης του προγράμματος θα τετραπλασιαστεί Η μνήμη που απαιτείται υπολογίζεται σε bytes, ανάλογα με το πλήθος και το μέγεθος των μεταβλητών που χρειάζεται να χρησιμοποιήσει ο αλγόριθμος

Βελτιστοποίηση (Optimisation) Για τα περισσότερα προβλήματα υπάρχουν περισσότεροι από ένας τρόποι επίλυσης (αλγόριθμοι) Βελτιστοποίηση ονομάζεται η διαδικασία αναζήτησης του αλγορίθμου ο οποίος για δεδομένο πρόβλημα, απαιτεί: Τον ελάχιστο χρόνο επεξεργασίας Την ελάχιστη μνήμη δεδομένων

Υλοποίηση (Implementation) Η διαδικασία καταγραφής αλγορίθμου σε κάποια γλώσσα προγραμματισμού

Γλώσσες Προγραμματισμού Τρόποι κατηγοριοποίησης γλωσσών προγραμματισμού: Ως προς τη δυνατότητα αφαιρετικότητας (abstraction): Χαμηλού Επιπέδου και Υψηλού Επιπέδου Ως προς τον τρόπο εκτέλεσης: Μεταγλωττιζόμενες και Διερμηνευόμενες Ως προς το ακολουθούμενο παράδειγμα: Procedural, Functional, Object Oriented, Multiparadigm

Γλώσσα Μηχανής Περιλαμβάνει εντολές γραμμένες σε μορφή ακολουθιών bit άμεσα εκτελέσιμες από την Κεντρική Μονάδα Επεξεργασίας (KME). Ονομάζεται γλώσσα μηχανής επειδή μέσω αυτής, και καμίας άλλης, επιτυγχάνεται «επικοινωνία» με τον υπολογιστή. Προγράμματα που γράφονται σε άλλες γλώσσες προγραμματισμού, για να γίνουν εκτελέσιμα πρέπει να «μεταφραστούν» σε γλώσσα μηχανής. Τα πρώτα προγράμματα γράφονταν σε δυαδικό κώδικα κι επομένως απαιτούσαν από τον προγραμματιστή να έχει πολύ καλή γνώση της αρχιτεκτονικής του ΗΥ Η πρώτη εξέλιξη από το δυαδικό κώδικα ήταν ο προγραμματισμός με δεκαεξαδικό κώδικα Κάθε σύμβολο δεκαεξαδικού αντιστοιχεί σε μια τετράδα δυαδικού κώδικα, κι επομένως ένα byte αναπαρίσταται με δύο δεκαεξαδικά σύμβολα. Π.χ. 1001 1101 <=> 9D

Γλώσσες Υψηλού και Χαμηλού Επιπέδου

Γλώσσες Χαμηλού επιπέδου Είναι εκείνες στις οποίες δεν υπάρχει κανένα επίπεδο αφαιρετικότητας, δηλαδή δεν υπάρχει η έννοια της σημασιολογίας: Υπάρχει ένα-προς-ένα αντιστοιχία ανάμεσα: Στις εντολές της γλώσσας και στην αντίστοιχη εντολή σε γλώσσα μηχανής Παράδειγμα: Δεκαεξαδικός κώδικας Assembly

Γλώσσες Υψηλού Επιπέδου Παρέχουν υψηλό βαθμό αφαίρεσης από την αρχιτεκτονική του ΗΥ Αποτελούνται από εντολές εύκολα κατανοητές στον προγραμματιστή, καθώς μοιάζουν με -περιορισμένη- φυσική γλώσσα. Για την εκτέλεση του προγράμματος απαιτείται η μετατροπή του κώδικα σε γλώσσα μηχανής

Μεταγλωττιζόμενες, Διερμηνευόμενες και Υβριδικές Γλώσσες Μεταγλωττιζόμενες είναι οι γλώσσες οι οποίες μέσω ενός ειδικού προγράμματος (το μεταφραστή/ compiler) μετατρέπουν τον πηγαίο κώδικα σε γλώσσα μηχανής, ο οποίος και αποτελεί το εκτελέσιμο του προγράμματος Πλεονέκτημα: ταχύτητα Διερμηνευόμενες είναι αυτές στις οποίες το πρόγραμμα εκτελείται βήμα-βήμα. Ένα ειδικό πρόγραμμα ( ο διερμηνέας/interpreter) μετατρέπει σταδιακά την κάθε εντολή σε γλώσσα μηχανής και εν συνεχεία την εκτελεί Πλεονέκτημα: φορητότητα Υβριδικές είναι οι γλώσσες στις οποίες ο compiler δεν μεταφράζει απευθείας σε γλώσσα μηχανής αλλά σε μια ενδιάμεση μορφή που λέγεται bytecode. Ο bytecode εκτελείται από έναν interpretter κατά την εκτέλεση ενός προγράμματος Πλεονέκτημα: ταχύτητα και φορητότητα

Διαδικαστικός ή δομημένος Προγραμματισμός Διαδικαστικός (procedural) ή δομημένος προγραμματισμός (structured programming) είναι μία προσέγγιση στον προγραμματισμό, η οποία βασίζεται στην έννοια της κλήσης διαδικασίας. Η διαδικασία, γνωστή επίσης και ως ρουτίνα, υπορουτίνα, μέθοδος ή συνάρτηση, είναι απλά ένα αυτοτελές σύνολο εντολών προς εκτέλεση. Ο δομημένος προγραμματισμός βασίζεται στην αρχή του διαίρει και βασίλευε, καθώς διασπά το βασικό πρόβλημα σε μικρότερα υποπροβλήματα. Κάθε εργασία με πολύπλοκη περιγραφή διαιρείται σε μικρότερες, έως ότου οι εργασίες να είναι αρκετά μικρές, περιεκτικές και εύκολες προς κατανόηση Κάθε διαδικασία μπορεί να καλεί άλλες διαδικασίες. Παράδειγμα γλωσσών δομημένου προγραμματισμού: C, Fortran, Pascal, Basic

Παράδειγμα δομημένου #include <stdio.h> int sum(int k, int l) { return k+l; } προγραμματισμού int main() { int x,y; puts("δύο ακέραιοι µε κενό ενδιάµεσα:"); scanf("%d %d",&x,&y); printf("sum is %d\n", sum(x,y)); return 0; }

Παράδειγμα: Μέγιστος Κοινός Διαιρέτης int mkd(int x, int y) { int mkd = 0; int z =0; while (mkd == 0 ) { if (z==0) { mkd = y; return mkd; } x = y; y = z; } } int main() { int x,y; puts( Dose akeraious xorismenous me keno:"); scanf("%d %d",&x,&y); printf( MKD is %d\n", sum(x,y)); return 0; }

Αντικειμενοστραφής Προγραμματισμός Εμφανίστηκε στα τέλη της δεκαετίας του 1960 και καθιερώθηκε κατά τη δεκαετία του 1990, αντικαθιστώντας σε μεγάλο βαθμό τον παραδοσιακό δομημένο προγραμματισμό ο χειρισμός σχετιζόμενων δεδομένων και των διαδικασιών που επενεργούν σε αυτά γίνεται από κοινού, μέσω μίας δομής δεδομένων που τα περιβάλλει ως αυτόνομη οντότητα με ταυτότητα και δικά της χαρακτηριστικά. Αυτή η δομή δεδομένων καλείται αντικείμενο και αποτελεί πραγματικό στιγμιότυπο στη μνήμη του ΗΥ

Παράδειγμα Αντικειμενοστραφούς Προγραμματισμού class Point { int x; int y; void movehorizontal(int x0) { x = x + x0; } public void main(string[] args) { } Point p1 = new Point(2, 5); p1.movehorizontal(8); }

Python Είναι ίσως η απλούστερη γλώσσα για να ξεκινήσει κάποιος προγραμματισμό Ξεκίνησε να αναπτύσσεται στις αρχές τις δεκαετίας του 1990 από τον μαθηματικό Guido van Rossum Χαρακτηριστικά Γενικής χρήσης (general- purpose) Υψηλού επιπέδου Είναι ως επί το πλείστον διερμηνευόμενη αλλά μπορεί να εκτελεστεί και ως υβριδική για ταχύτερη εκτέλεση Υφίσταται με διάφορες μορφές, δηλαδή υλοποιεί πολλαπλά προγραμματιστικά παραδείγματα: Procedural, Functional, Object Oriented

Πλεονεκτήματα Python Μπορεί κανείς να την χρησιμοποιήσει διαδραστικά (interactively) με τον ίδιο τρόπο που χρησιμοποιεί μια αριθμομηχανή. Κι αυτός είναι ο πιο εύκολος τρόπος να αρχίσει κανείς να μαθαίνει προγραμματισμό Αν και είναι γλώσσα υψηλού επιπέδου, διαθέτει πολύ απλή σύνταξη. Έτσι επιτρέπει στον προγραμματιστή να ασχοληθεί με την επίλυση του προβλήματος κι όχι με τις ιδιαιτερότητές της. Μπορεί να συνδυαστεί με άλλες δημοφιλείς γλώσσες όπως C, C++ και Java Αποτελεί ελεύθερο και ανοιχτού κώδικα λογισμικό και διατίθεται δωρεάν από το επίσημο site http://www.python.org Υπάρχουν εκδόσεις για κάθε λειτουργικό σύστημα (ακόμα και για κινητά τηλέφωνα).

Το περιβάλλον της Python Γράφω τη λέξη python στο terminal, οπότε το linux prompt ($), αλλάζει στο python prompt (>>>) Εδώ πλέον εισάγω εντολές της python και όχι του linux cli

Χρήση της Python ως Αριθμομηχανή >>> print 5+3 8 >>> print (7-2)*4 20 Η γλώσσα επιτρέπει τη χρήση παρενθέσεων. Όταν σε μια αριθμητική πράξη υπάρχουν πολλαπλές παρενθέσεις ενσωματωμένες η μία στην άλλη, πρώτα εκτελείται η εσωτερικότερη, όπως δηλαδή θα γινόταν και αν κάναμε στις πράξεις στο χαρτί, π.χ. >>> (12+(12/3))/2 8 >>> Επίσης μπορούμε να τυπώνουμε πολλά αποτελέσματα με την ίδια εντολή, αρκεί να χωρίζουμε με κόμματα: >>> print 7+2, 7-2, 7*2, 7/2 9 5 14 3 Μια μικρή προσοχή χρειάζεται στην πράξη της διαίρεσης. Η Python εκτελεί ακέραια διαίρεση, εκτός αν δηλώσουμε ότι θέλουμε να κάνει διαίρεση πραγματικών αριθμών. Ο πιο απλός τρόπος να το δηλώσουμε αυτό είναι να γράψουμε τον διαιρετέο ή τον διαιρέτη (ή και τους δυο) ως πραγματικούς. Πχ.: >>> print 7/2, 7/2.0, 7.0/2, 7.0/2.0, 7./2, 7/2., 7./2. 3 3.5 3.5 3.5 3.5 3.5 3.5 Για να υψώσω αριθμό σε δύναμη, μπορώ να χρησιμοποιώ το σύμβολο **, π.χ. >>> 2**10 1024 >>>

Μεταβλητές (Variables) Στην αριθμομηχανή μπορώ να αποθηκεύσω έναν αριθμό με το πλήκτρο MR (memory register) για μετέπειτα χρήση. Στον προγραμματισμό, μπορώ να αποθηκεύω όσα δεδομένα θέλω με τη χρήση μεταβλητών, π.χ. >>> a = 5 >>> b = a**2 >>> print a, b 5 25 >>>

Εκχώρηση τιμής σε μεταβλητή Εκχώρηση (Assignment) Είναι η διαδικασία κατά την οποία δίνω τιμή σε μια μεταβλητή Έχει πολύ συγκεκριμένη σύνταξη: a = 3 Και όχι το ανάποδο Η τιμή μιας μεταβλητής μπορεί να αλλάζει μέσω της εκχώρησης, όσες φορές θέλω κατά τη διάρκεια εκτέλεσης του προγράμματος, π.χ. >>> a = 5 >>> b = a**2 >>> print a, b 5 25 >>> a = b -2.3 >>> a 22.7 >>>