Δημοσιεύτηκε: 04 Ιούλ 2012, 20:02
από konnn
Με τη προσθήκη αυτή σκοπεύουμε να παροτρύνουμε τα μέλη να αναρτούν εκεί την αλγοριθμική σκέψη που έκαναν ώστε να φτάσουν στο επιθυμητό αποτέλεσμα, δηλαδή να λύσουν ένα πρόβλημα.

Πολλές φορές πολλοί από εμάς καταφεύγουμε κατευθείαν στη συγγραφή κώδικα ώστε να υλοποιήσουμε μια λύση ενός προβλήματος. Όμως η λύση είναι ανεξάρτητη από τη γλώσσα προγραμματισμού που θα χρησιμοποιηθεί (C, C++, Python,...). Αυτό διότι νοητά έχουμε σκεφθεί τα βήματα που θα ακολουθήσουμε για το σκοπό αυτό.

Τι πετυχαίνουμε όμως κάνοντας το παραπάνω, να γράψουμε αυτά τα νοητά βήματα δηλαδή τον αλγόριθμο; Η απάντηση είναι πως δίνουμε την δυνατότητα σε οποιονδήποτε γνωρίζει μια γλώσσα προγραμματισμού να υλοποιήσει τον αλγόριθμο. Μιας και μιλάμε λοιπόν για ανοικτό λογισμικό γιατί να μη μιλήσουμε και για ανοικτή σκέψη από την οποία προέρχεται το λογισμικό; Για παράδειγμα, έχω φτιάξει ένα παιχνίδι που λέγεται π.χ Α. Το έχω υλοποιήσει σε γλώσσα C και τρέχει από το τερματικό. Δε γνωρίζω όμως την π.χ PyGTK. Παραθέτοντας τον αλγόριθμο του παιχνιδιού δίνεται το δικαίωμα και η ευκαιρία να παίξουμε το παιχνίδι και από γραφικό περιβάλλον, εάν κάποιος θέλει να τον υλοποιήσει . Επιπλέον μπορούμε να διορθώσουμε ευκολότερα μια λάθος σκέψη ή να προσθέσουμε κάτι χωρίς να αλλάζουμε μεταβλητές και ορισμούς όπως θα έπρεπε να κάνουμε αν υλοποιούσαμε κατευθείαν σε γλώσσα όπως τη C.

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


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




ΕΥΡΕΤΗΡΙΟ:

  1. Μέγιστος Κοινός Διαιρέτης - Αλγόριθμος του Ευκλείδη
    Spoiler: show
    ΜΚΔ(a, b)
    IF b = 0 THEN
    RETURN a
    ELSE
    RETURN ΜΚΔ(b, a mod b)

  2. Σειριακή Αναζήτηση σε Πίνακα
    Spoiler: show
    θέση <- 0
    Για i από 1 μέχρι Ν
    Αν table[i] = key τότε
    θέση <- i
    Τέλος_Αν
    Τέλος_Επανάληψης
    Αν θέση = 0 τότε
    Εμφάνισε 'Δεν υπάρχει'
    Αλλιώς
    Εμφάνισε 'Βρέθηκε στη θέση', θέση
    Τέλος_Αν

  3. Δευτεροβάθμια εξίσωση
    Spoiler: show
    ΠΡΟΓΡΑΜΜΑ Δευτεροβάθμια_εξίσωση

    ΜΕΤΑΒΛΗΤΕΣ
    ΠΡΑΓΜΑΤΙΚΕΣ: α, β, γ, Δ

    ΑΡΧΗ

    ΓΡΑΨΕ 'Δώσε το συντελεστή α:'
    ΔΙΑΒΑΣΕ α
    ΓΡΑΨΕ 'Δώσε το συντελεστή β:'
    ΔΙΑΒΑΣΕ β
    ΓΡΑΨΕ 'Δώσε το συντελεστή γ:'
    ΔΙΑΒΑΣΕ γ

    ΑΝ α<>0 ΤΟΤΕ

    Δ <-- β^2-4*α*γ
    ΑΝ Δ<0 ΤΟΤΕ
    ΓΡΑΨΕ 'Η εξίσωση είναι ΑΔΥΝΑΤΗ'
    ΑΛΛΙΩΣ_ΑΝ Δ>0 ΤΟΤΕ
    ΓΡΑΨΕ 'Η εξίσωση έχει ΔΥΟ ΡΙΖΕΣ:'
    ΓΡΑΨΕ 'ρ1 =', (-β+Τ_Ρ(Δ))/(2*α)
    ΓΡΑΨΕ 'ρ2 =', (-β-Τ_Ρ(Δ))/(2*α)
    ΑΛΛΙΩΣ
    ΓΡΑΨΕ 'Η εξίσωση έχει ΜΙΑ ΔΙΠΛΗ ΡΙΖΑ:'
    ΓΡΑΨΕ 'ρ =', -β/(2*α)
    ΤΕΛΟΣ_ΑΝ

    ΑΛΛΙΩΣ

    ΑΝ β<>0 ΤΟΤΕ
    ΓΡΑΨΕ 'Η εξίσωση έχει ΜΙΑ ΡΙΖΑ:'
    ΓΡΑΨΕ 'ρ =', -γ/β
    ΑΛΛΙΩΣ
    ΑΝ γ<>0 ΤΟΤΕ
    ΓΡΑΨΕ 'Η εξίσωση είναι ΑΔΥΝΑΤΗ'
    ΑΛΛΙΩΣ
    ΓΡΑΨΕ 'Η εξίσωση είναι ΑΟΡΙΣΤΗ'
    ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΑΝ

    ΤΕΛΟΣ_ΑΝ

    ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Δευτεροβάθμια_εξίσωση