Πληροφορική Ι — Εβδομάδα 1

Τι είναι αλγόριθμος · Η Python

Η έννοια του αλγορίθμου

Μια βήμα προς βήμα διαδικασία επίλυσης ενός προβλήματος, με πεπερασμένο πλήθος βημάτων. Πρέπει να:

  • δέχεται είσοδο και να παράγει έξοδο
  • είναι ορισμένος (σαφείς οδηγίες, απλές μεμονωμένα)
  • καλύπτει όλες τις δυνατές περιπτώσεις εισόδου
  • τερματίζει πάντα, σε πεπερασμένα βήματα

Από το πρόβλημα στο πρόγραμμα

  1. Ανάλυση των δεδομένων
  2. Μαθηματική διατύπωση
  3. Σχεδιασμός/επιλογή αλγορίθμου
  4. Διατύπωση σε γλώσσα προγραμματισμού
  5. Εκτέλεση
  6. Ερμηνεία αποτελεσμάτων

Ένας αλγόριθμος περιγράφεται με φυσική γλώσσα, διάγραμμα ροής, ψευδοκώδικα, ή κώδικα.

Παράδειγμα: Γραμμική Αναζήτηση

Δίνεται λίστα v και τιμή-στόχος. Βρες τη θέση της (ή διαπίστωσε ότι δεν υπάρχει).

Σάρωση από την αρχή, στοιχείο-στοιχείο· σταματάμε μόλις βρεθεί ο στόχος. Δεν χρειάζεται ταξινομημένη λίστα.

… ως διάγραμμα ροής

flowchart TD
    A(["Αρχή"]) --> B["θέση = 0"]
    B --> C{"θέση < μήκος(v) ;"}
    C -- "Όχι" --> H["Δεν βρέθηκε"]
    C -- "Ναι" --> D{"v[θέση] == στόχος ;"}
    D -- "Ναι" --> F["Βρέθηκε στη θέση 'θέση'"]
    D -- "Όχι" --> E["θέση = θέση + 1"]
    E --> C

… ως ψευδοκώδικας

ΓΡΑΜΜΙΚΗ_ΑΝΑΖΗΤΗΣΗ(v, στόχος):
    για θέση από 0 έως μήκος(v) - 1:
        αν v[θέση] = στόχος:
            επίστρεψε θέση
    επίστρεψε -1

… ως κώδικας Python

Πρόγευση — for, if, λίστες, def έρχονται στις Εβδομάδες 3–6:

Ταξινομημένη λίστα → δυαδική αναζήτηση (Εβδομάδα 5, με τον while): ελάχιστα βήματα, μισό διάστημα κάθε φορά.

Η Python

Χαρακτηριστικά της Python

  • Διερμηνευόμενη γλώσσα (interpreter), διαδραστικά ή ως script
  • Δυναμική τυποποίηση — δεν δηλώνουμε τύπους
  • Υποχρεωτική στοίχιση αντί για άγκιστρα
  • Μεγάλη πρότυπη βιβλιοθήκη
  • Guido van Rossum, αρχές ’90· σήμερα χρησιμοποιούμε Python 3

Μεταβλητές και τύποι

Όνομα → αντικείμενο στη μνήμη. Ο τύπος προσδιορίζεται αυτόματα:

Κανόνες ονοματολογίας: όχι δεσμευμένες λέξεις, ξεκινά με γράμμα/_, χωρίς κενά/τελείες, case-sensitive.

Πολλαπλή εκχώρηση & swap

Μεταβλητές ως αναφορές

Ένα όνομα δείχνει σε ένα αντικείμενο — δεν είναι “κουτί” με τιμή:

Για αμετάβλητους τύπους (αριθμοί, strings) αυτό περνά απαρατήρητο· για μεταβλητούς τύπους (λίστες, Εβδομάδα 4) έχει ορατές συνέπειες.

Είσοδος με input

age = int(input('Δώσε την ηλικία σου: '))   # input() επιστρέφει πάντα str

Σημείωση

Σε browser δεν υποστηρίζεται input() — προσομοιώνουμε με απευθείας εκχώρηση τιμής.

Συνηθισμένα λάθη με int()/float()

int()/float() δουλεύουν μόνο πάνω σε συμβολοσειρές που αναπαριστούν έγκυρη τιμή του τύπου.

Έξοδος με print

Σημαντικό

+ λειτουργεί μόνο ανάμεσα σε ίδιους τύπους — 'Ηλικία: ' + 20 δίνει TypeError. Χρειάζεται str(20), ή κόμμα στην print.

Μορφοποίηση & f-strings

Γραφική έξοδος: matplotlib

plt.plot / plt.scatter / plt.bar · xlabel ylabel title legend · plt.show(). Θα το χρησιμοποιούμε σε όλο το μάθημα.

Σύνοψη

  • Έννοια αλγορίθμου, τέσσερις μορφές περιγραφής, γραμμική αναζήτηση
  • Γραφήματα με matplotlib (plot/scatter/bar) — εργαλείο για όλο το μάθημα
  • Μεταβλητές, βασικοί τύποι (int, float, str), δυναμική τυποποίηση
  • Μεταβλητές ως αναφορές (id, is)
  • input/print, μετατροπές τύπου
  • Μορφοποίηση εξόδου: sep/end, format, f-strings

⤺ Πλήρεις σημειώσεις  ·  Πρόγραμμα μαθήματος