Professional Documents
Culture Documents
(Μέρος 2ο)
Νικόλαος Παπαδάκης
●
http://moodle.sse.gr
●
Username: evelpis1101
●
Password: Sse1101!
●
2ο εξάμηνο -> ΕΠΙΣΤΗΜΗ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗ ΣΤΙΣ
ΕΝΟΠΛΕΣ ΔΥΝΑΜΕΙΣ
●
Γραφείο:
●
στον πρώτο όροφο, το πρώτο Γραφέιο από την Ανατολική πλευρά
●
Δευτέρες και Τρίτες
●
Οποιαδήποτε άλλη μέρα κατόπιν συνεννοήσεως
●
Εναλλακτικά με email
●
ΜΗΝ αφήνετε απορίες αναπάντητες
●
Εξετάσεις
●
Διαγωνίσματα προόδου
●
Εργασίες
●
Συμμετοχή
5
Ορισμός Αλγορίθμου
●
Τι είναι αλγόριθμος;
●
Γιατί χρειαζόμαστε αλγορίθμους;
●
Πως “γράφουμε” έναν αλγόριθμο;
●
Παραδείγματα
●
Ρίζες παράστασης: αχ² + β χ + γ = 0
●
Βήμα 1: Λάβε τους συντελεστές
●
Βήμα 2: Υπολόγισε διακρίνουσα
●
Βήμα 3: Αν η διακρίνουσα < 0 τότε μιγαδικές ρίζες λύσεις
● Βήμα 4: Αλλιώς υπολόγισε χ1,2 = (- β ± √ Δ )/2α
●
Βήμα 5: Εκτύπωσε ρίζες
●
Ένας αλγόριθμος είναι μια βήμα προς βήμα μέθοδος επίλυσης
ενός προβλήματος.
●
Χρησιμοποιείται συνήθως για την επεξεργασία δεδομένων, τον
υπολογισμό και άλλες σχετικές υπολογιστικές και μαθηματικές
διαδικασίες.
●
Ένας αλγόριθμος χρησιμοποιείται επίσης για τον χειρισμό
δεδομένων με διάφορους τρόπους,
●
όπως η εισαγωγή ενός νέου στοιχείου δεδομένων,
●
η αναζήτηση ενός συγκεκριμένου στοιχείου ή
●
η ταξινόμηση ενός στοιχείου.
●
Αλγόριθμοι παντού
●
Sorting
●
Λύτης Sudoku
●
Λύτης Rubik’s cube
●
Εύρεση Μέγιστου κοινού διαιρέτη
●
Φωτογραφική μηχανή σας εντοπίζει το πρόσωπο
●
Page Rank: Ο αλγόριθμος της αναζήτησης της Google
●
Stable Marriage Algorithm → Kidney exchange Matching Algorithm Kidney exchange Matching Algorithm
• Screen
• Hard drive Main Memory
• Printer
• Zip-Disk • Δεδομένα
•
• CD-Rom αποθηκεύονται καιPlotter
ανακτώνται
• Tape Backup
Software (Λογισμικό)
●
Προγράμματα Ελέγχου
●
Ελέγχουν τη λειτουργία του Συστήματος
●
Περιλαμβάνουν το λειτουργικό σύστημα (ΛΣ)
●
Προγράμματα Εφαρμογών
●
Word processors
●
Compilers
●
Spreadsheets
●
Data Bases
●
Χρησιμοποιεί ψηφιακά σήματα
●
ΜΟΝΟ “0” και “1” (binary)
●
bits (BInary digiTs)
●
Τα δεδομένα και οι εντολές αποθηκεύονται σε binary
●
8 bits σε ένα byte
●
ASCII χαρακτήρας σε ένα byte
●
Integers αποθηκεύονται σε 2 ή 4 bytes
●
Γιατί τόσες πολλές;
●
Διαφορές με τις φυσικές γλώσσες
●
Λιγότερες ασάφειες (και βαθμοί ελευθερίας)
●
Όχι εξαιρέσεις και γλωσσικά φαινόμενα
●
Αυστηρή, χωρίς εξαιρέσεις, σύνταξη και γραμματική
●
Ποια η σημερινή τάση;
●
Καλές πρακτικές προγραμματισμού
●
...Εν αρχή ην ο αλγόριθμος
●
Πως επιλέγουμε γλώσσα προγραμματισμού
●
Ανάλογα με τους περιορισμούς και τη φύση του προβλήματος
●
Ανάλογα με τις τεχνικές μας γνώσεις
●
Ανάλογα με τους περιορισμούς του Υλικού και του Λογισμικού μας
●
Οι πρώτοι υπολογιστές προγραμματίζονταν σε γλώσσες μηχανής
●
binary κώδικας
●
Η γλώσσα Assembly χρησιμοποιούσε μνημονικούς κώδικες (καθόλου φιλική προς τον
προγραμματιστή)
●
Οι κωδικοί μεταφράζονται σε γλώσσα μηχανής από ένα πρόγραμμα που ονομάζεται
"συναρμολογητής" (assembler)
●
Οι γλώσσες υψηλού επιπέδου (High level languages-HLL) =
κοντά στην Αγγλική και στην Άλγεβρα
write_string (outfile,cust_name,'l',23);
first_line = 1;
ord.read_order(infile);
while (!ord.done())
{
●
if ( !first_line) write_string (outfile," ",'l',23);
ord.print_order (outfile,part_list);
first_line = 0;
ord.read_order(infile);
}
●
Η “μεταφορά” του κώδικα σε υψηλού επιπέδου γλώσσα σε γλώσσα
μηχανής, κατανοητή από τον υπολογιστή, γίνεται:
●
Με τη διερμήνευση (διαμέσου του διερμηνέας ή διερμηνευτής - interpreter) και
●
τη μεταγλώττιση (διαμέσου του μεταγλωττιστή – compiler).
●
Η διερμήνευση και η μεταγλώττιση είναι τα δύο βασικά μέσα με τα οποία
υλοποιούνται οι γλώσσες προγραμματισμού, αν και δεν αποτελούν εντελώς
διακριτές κατηγορίες, καθώς οι λειτουργίες τους επικαλύπτονται σε κάποιον
βαθμό
●
Τυπική ροή μεταγλώττισης
Ανάλυση και
σχεδιασμός
αλγορίθμου διάφορο
συγκεκριμένη
Επεξεργασία της
γλώσσα
γλώσσας
προγραμματισμού
προγραμματισμού
γλώσσας υψηλού
επιπέδου
●
Κατανοήστε πλήρως το πρόβλημα
●
Καθορίστε την επιθυμητή απόδοση, την απαιτούμενη είσοδο, την
επεξεργασία που θα χρειαστεί
●
Διαχωρίστε το πρόβλημα σε μικρότερα προβλήματα
●
Η διαδικασία στα Αγγλικά:
●
structured design
●
top-down design
●
stepwise refinement
●
modular programming
●
Το Object-Oriented Programming (ΑΠ) αντιμετωπίζει
διαφορετικά, σε σχέση με τον Δομημένο Προγραμματισμό, το
σχεδιασμό και τον προγραμματισμό των εφαρμογών.
●
Βασική αρχή στον Αντικειμενοστρεφή Προγραμματισμό είναι ότι
δεν προγραμματίζονται διαδικασίες ή λειτουργίες. Όλα
αντιμετωπίζονται σαν αντικείμενα τα οποία έχουν χαρακτηριστικές
ιδιότητες και λειτουργίες, μέσω των οποίων αντιδρούν σε
μηνύματα του περιβάλλοντος.
●
Βασική αρχή του Αντικειμενοστραφή Προγραμματισμού: ο
πραγματικός κόσμος αποτελείται από αντικείμενα.
●
Τα αντικείμενα αυτά παίρνουν μορφή και η συμπεριφορά τους
εξαρτάται από τα ερεθίσματα που λαμβάνουν από το περιβάλλον
στο οποίο βρίσκονται.
21
Open Source (Ανοικτός κώδικας)
●
Ο ανοιχτός κώδικας είναι ένα μοντέλο ανάπτυξης που προωθεί την καθολική πρόσβαση μέσω
της ελεύθερης άδειας για το σχεδιασμό ενός προϊόντος (Open Source Software -OSS, στην
περίπτωση του λογισμικού πρόκειται για την πρόσβαση στον πηγαίο κώδικα)
●
Η καθολική αναδιανομή του εν λόγω σχεδίου συμπεριλαμβάνει και τις περαιτέρω βελτιώσεις του από οποιονδήποτε
●
Όχι μόνο σε Λογισμικό αλλά και σε Υλικό
●
Πρόκειται για “επανάσταση” που έχει βρει μεγάλη ανταπόκριση στις κοινότητες των
προγραμματιστών
●
Και ο ανοικτός κώδικας διέπεται από άδειες, οι κυριότερες:
●
Apache License 2.0
●
BSD 3-Clause "New" or "Revised" license
●
BSD 2-Clause "Simplified" or "FreeBSD" license
●
GNU General Public License (GPL)
●
GNU Library or "Lesser" General Public License (LGPL)
●
MIT license
●
Mozilla Public License 2.0
●
Eclipse Public License
●
Πλεονεκτήματα – μειονεκτήματα
●
Μια μη εξαντλητική λίστα με εφαρμογές, ανά κατηγορία, ανοικτού
κώδικα:
●
https://en.wikipedia.org/wiki/List_of_free_and_open-source_software_packages
●
Και αντίστοιχη λίστα για το Υλικό:
●
https://en.wikipedia.org/wiki/List_of_open-source_hardware_projects