Αλγόριθμοι σε Ψευδοκώδικα ή Διάγραμμα Ροής.

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Αλγόριθμοι σε Ψευδοκώδικα ή Διάγραμμα Ροής.

Δημοσίευσηαπό konnn » 04 Ιούλ 2012, 20:02

Με τη προσθήκη αυτή σκοπεύουμε να παροτρύνουμε τα μέλη να αναρτούν εκεί την αλγοριθμική σκέψη που έκαναν ώστε να φτάσουν στο επιθυμητό αποτέλεσμα, δηλαδή να λύσουν ένα πρόβλημα.

Πολλές φορές πολλοί από εμάς καταφεύγουμε κατευθείαν στη συγγραφή κώδικα ώστε να υλοποιήσουμε μια λύση ενός προβλήματος. Όμως η λύση είναι ανεξάρτητη από τη γλώσσα προγραμματισμού που θα χρησιμοποιηθεί (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 ΤΟΤΕ
    ΓΡΑΨΕ 'Η εξίσωση είναι ΑΔΥΝΑΤΗ'
    ΑΛΛΙΩΣ
    ΓΡΑΨΕ 'Η εξίσωση είναι ΑΟΡΙΣΤΗ'
    ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΑΝ

    ΤΕΛΟΣ_ΑΝ

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




1 Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Προχωρημένος
2 Desktop : Ubuntu 16.04 64bit
a Intel Core i3 CPU 530 2.93GHz ‖ RAM 3824 MiB ‖ Intel DH55HC -
b nVidia Device [10de:1040] (rev a1)
c eth0: Intel 82578DC Gigabit Network Connection
3 Notebook : Ubuntu 16.04 64 bit
a Intel Core i3-2365M CPU @ 1.40GHz ‖ RAM 3854 MiB ‖ LENOVO 20197
b Intel 2nd Generation Core Processor Family Integrated Graphics Controller
c 5 wlan0: Intel Centrino Wireless-N 2230 ⋮ eth0: Realtek RTL8101E/RTL8102E

Αυτόματη υπογραφή.
Άβαταρ μέλους
konnn
Συντονιστής
Συντονιστής
 
Δημοσιεύσεις: 3568
Εγγραφή: 12 Ιούλ 2010, 17:54
Τοποθεσία: Καλαμάτα
Launchpad: konnn
Εκτύπωση

Re: Αλγόριθμοι σε Ψευδοκώδικα ή Διάγραμμα Ροής.

Δημοσίευσηαπό eliasps » 06 Ιούλ 2012, 01:00

:clap:
Πολύ καλή σκέψη!

Στην σύντομη πορεία μου στον προγραμματισμό κατάλαβα το πόσο σημαντικά ήταν τα διαγράμματα ροής. Με ενδιέφεραν πολύ περισσότερο και από την γλώσσα στην οποία προγραμμάτιζα (Την C).

Πιστεύω ότι λόγω της απλότητας του σχεδιασμού τον διαγραμμάτων, άμα μάθει κάποιος πως λειτουργούν, μπορεί να έχει ιδέες για προγράμματα (χωρίς να έχει γνώσεις προγραμματισμού) και οι προγραμματιστές στο φόρουμ να τις υλοποιούν. Με αυτόν τον τρόπο ίσως μεγαλώσει το ποσοστό των εφαρμογών από την κοινότητα και επίσης, κάποιος που δεν έχει γνώσεις θα μπορεί με ενδιαφέρον και σχετική ευκολία να καταλάβει μια γλώσσα βλέποντας κομμάτια του διαγράμματος ροής και τον κώδικα που τα υλοποιεί.
Άβαταρ μέλους
eliasps
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4017
Εγγραφή: 16 Δεκ 2011, 22:25
Τοποθεσία: Αθήνα, Αττική
Launchpad: eliasps
IRC: eliasps
Εκτύπωση

Re: Αλγόριθμοι σε Ψευδοκώδικα ή Διάγραμμα Ροής.

Δημοσίευσηαπό konnn » 12 Ιούλ 2012, 20:26

Έγινε μια πρώτη προσθήκη κοινών αλγορίθμων στο ευρετήριο της αρχικής δημοσίευσης. Θα ακολουθήσουν και προσωπικές υλοποίησεις. Δεκτές παρατηρήσεις, επιθυμητές δικές σας προσθήκες .
1 Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Προχωρημένος
2 Desktop : Ubuntu 16.04 64bit
a Intel Core i3 CPU 530 2.93GHz ‖ RAM 3824 MiB ‖ Intel DH55HC -
b nVidia Device [10de:1040] (rev a1)
c eth0: Intel 82578DC Gigabit Network Connection
3 Notebook : Ubuntu 16.04 64 bit
a Intel Core i3-2365M CPU @ 1.40GHz ‖ RAM 3854 MiB ‖ LENOVO 20197
b Intel 2nd Generation Core Processor Family Integrated Graphics Controller
c 5 wlan0: Intel Centrino Wireless-N 2230 ⋮ eth0: Realtek RTL8101E/RTL8102E

Αυτόματη υπογραφή.
Άβαταρ μέλους
konnn
Συντονιστής
Συντονιστής
 
Δημοσιεύσεις: 3568
Εγγραφή: 12 Ιούλ 2010, 17:54
Τοποθεσία: Καλαμάτα
Launchpad: konnn
Εκτύπωση

Re: Αλγόριθμοι σε Ψευδοκώδικα ή Διάγραμμα Ροής.

Δημοσίευσηαπό pmav99 » 12 Ιούλ 2012, 23:47

Θα μπορούσε ίσως να μπει identation ανά blocks του IF κτλ καθώς και λίγες πληροφορίες (πχ αναδρομή κτλ).
pmav99
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 574
Εγγραφή: 05 Ιούλ 2008, 14:29
Εκτύπωση

Re: Αλγόριθμοι σε Ψευδοκώδικα ή Διάγραμμα Ροής.

Δημοσίευσηαπό konnn » 13 Ιούλ 2012, 01:21

pmav99 έγραψε:Θα μπορούσε ίσως να μπει identation ανά blocks του IF κτλ καθώς και λίγες πληροφορίες (πχ αναδρομή κτλ).

Αν εννοείς κάποιον οδηγό σχετικά με τις έννοιες αυτές, λέω να ανοίξω θέμα στην ενότητα Εκπαίδευση. Θεωρώ δεδομένο πως κάποιος γνωρίζει να διαβάζει ψευδοκώδικα αφού είναι σε θέση να γράψει κώδικα. Έπεσα μέσα ή εννοείς κάτι άλλο;
1 Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Προχωρημένος
2 Desktop : Ubuntu 16.04 64bit
a Intel Core i3 CPU 530 2.93GHz ‖ RAM 3824 MiB ‖ Intel DH55HC -
b nVidia Device [10de:1040] (rev a1)
c eth0: Intel 82578DC Gigabit Network Connection
3 Notebook : Ubuntu 16.04 64 bit
a Intel Core i3-2365M CPU @ 1.40GHz ‖ RAM 3854 MiB ‖ LENOVO 20197
b Intel 2nd Generation Core Processor Family Integrated Graphics Controller
c 5 wlan0: Intel Centrino Wireless-N 2230 ⋮ eth0: Realtek RTL8101E/RTL8102E

Αυτόματη υπογραφή.
Άβαταρ μέλους
konnn
Συντονιστής
Συντονιστής
 
Δημοσιεύσεις: 3568
Εγγραφή: 12 Ιούλ 2010, 17:54
Τοποθεσία: Καλαμάτα
Launchpad: konnn
Εκτύπωση

Re: Αλγόριθμοι σε Ψευδοκώδικα ή Διάγραμμα Ροής.

Δημοσίευσηαπό pmav99 » 13 Ιούλ 2012, 01:25

Για το indentation εννοώ αυτό
Κώδικας: Επιλογή όλων
ΜΚΔ(a, b)
    IF b = 0 THEN
        RETURN a
    ELSE
        RETURN ΜΚΔ(b, a mod b)

Για το άλλο οκ, ό,τι νομίζεις καλύτερο.
pmav99
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 574
Εγγραφή: 05 Ιούλ 2008, 14:29
Εκτύπωση

Re: Αλγόριθμοι σε Ψευδοκώδικα ή Διάγραμμα Ροής.

Δημοσίευσηαπό konnn » 13 Ιούλ 2012, 01:29

pmav99 έγραψε:Για το indentation εννοώ αυτό

Κώδικας: Επιλογή όλων
ΜΚΔ(a, b)
IF b = 0 THEN
RETURN a
ELSE
RETURN ΜΚΔ(b, a mod b)

έχεις όρεξη να βοηθήσεις με περισσότερες πληροφορίες; Νομίζεις πως θα πρέπει να αναλύσουμε τα βήματα-αποτελέσματα της αναδρομής;
1 Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Προχωρημένος
2 Desktop : Ubuntu 16.04 64bit
a Intel Core i3 CPU 530 2.93GHz ‖ RAM 3824 MiB ‖ Intel DH55HC -
b nVidia Device [10de:1040] (rev a1)
c eth0: Intel 82578DC Gigabit Network Connection
3 Notebook : Ubuntu 16.04 64 bit
a Intel Core i3-2365M CPU @ 1.40GHz ‖ RAM 3854 MiB ‖ LENOVO 20197
b Intel 2nd Generation Core Processor Family Integrated Graphics Controller
c 5 wlan0: Intel Centrino Wireless-N 2230 ⋮ eth0: Realtek RTL8101E/RTL8102E

Αυτόματη υπογραφή.
Άβαταρ μέλους
konnn
Συντονιστής
Συντονιστής
 
Δημοσιεύσεις: 3568
Εγγραφή: 12 Ιούλ 2010, 17:54
Τοποθεσία: Καλαμάτα
Launchpad: konnn
Εκτύπωση

Re: Αλγόριθμοι σε Ψευδοκώδικα ή Διάγραμμα Ροής.

Δημοσίευσηαπό pmav99 » 13 Ιούλ 2012, 02:27

To Indentation είναι απαραίτητο για να είναι πιο ευανάγνωστος ο αλγόριθμος και μια μικρή περιγραφή σίγουρα θα βοηθήσει κάποιον να καταλάβει καλύτερα τι παίζει. Επίσης μπορεί κάτι να μπορεί να υπολογιστεί με περισσότερους από έναν τρόπους (πχ το παραγοντικό που μπορεί να υπολογιστεί με αναδρομή, με τύπο κτλ).

konnn έγραψε:έχεις όρεξη
Για να είμαι ειλικρινής όχι :shifty: :shifty: :lol: :lol: :P

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

Από εκεί και πέρα, αν ενδιαφέρεσαι για κάτι τέτοιο, να ξέρεις ότι σε wiki θα είναι και πιο εύκολο και πιο παραγωγικό, αρκεί φυσικά να βρεθούν άτομα που να έχουν ενδιαφέρον να συνεισφέρουν. Ως μορφή τα forum posts είναι από αρκετές απόψεις πιο περιοριστικά αν και συνήθως έχουν μεγαλύτερη επισκεψιμότητα (εκτός και αν γράφεις στην wikipedia :P).
pmav99
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 574
Εγγραφή: 05 Ιούλ 2008, 14:29
Εκτύπωση

Re: Αλγόριθμοι σε Ψευδοκώδικα ή Διάγραμμα Ροής.

Δημοσίευσηαπό konnn » 13 Ιούλ 2012, 15:25

pmav99 έγραψε:To Indentation είναι απαραίτητο για να είναι πιο ευανάγνωστος ο αλγόριθμος και μια μικρή περιγραφή σίγουρα θα βοηθήσει κάποιον να καταλάβει καλύτερα τι παίζει.

Νομίζω πως κάποιος που έχει σχετικές γνώσεις προγραμματισμού και μπορεί να γράφει έστω και απλούς κώδικες , μπορεί να διαβάσει τους αλγόριθμους.
pmav99 έγραψε: Επίσης μπορεί κάτι να μπορεί να υπολογιστεί με περισσότερους από έναν τρόπους (πχ το παραγοντικό που μπορεί να υπολογιστεί με αναδρομή, με τύπο κτλ).

Σκοπός του νήματος είναι να παραθέσει αλγόριθμους ανεξάρτητα τη μεθοδολογία. Μπορεί για την επίλυση ενός θέματος όπως προείπες να υπάρχουν δυο, τρεις,...δεν υπάρχουν περιορισμοί.
pmav99 έγραψε:Βασικά εκτός του ότι μου λείπει το απαραίτητο background, δεν με ενδιαφέρει να γράψω tutorial προγραμματισμού. Υπάρχουν άπειρες πηγές που το κάνουν πολύ καλύτερα από ότι θα το έκανα ποτέ εγώ.

Από εκεί και πέρα, αν ενδιαφέρεσαι για κάτι τέτοιο, να ξέρεις ότι σε wiki θα είναι και πιο εύκολο και πιο παραγωγικό, αρκεί φυσικά να βρεθούν άτομα που να έχουν ενδιαφέρον να συνεισφέρουν.

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

;)
1 Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Προχωρημένος
2 Desktop : Ubuntu 16.04 64bit
a Intel Core i3 CPU 530 2.93GHz ‖ RAM 3824 MiB ‖ Intel DH55HC -
b nVidia Device [10de:1040] (rev a1)
c eth0: Intel 82578DC Gigabit Network Connection
3 Notebook : Ubuntu 16.04 64 bit
a Intel Core i3-2365M CPU @ 1.40GHz ‖ RAM 3854 MiB ‖ LENOVO 20197
b Intel 2nd Generation Core Processor Family Integrated Graphics Controller
c 5 wlan0: Intel Centrino Wireless-N 2230 ⋮ eth0: Realtek RTL8101E/RTL8102E

Αυτόματη υπογραφή.
Άβαταρ μέλους
konnn
Συντονιστής
Συντονιστής
 
Δημοσιεύσεις: 3568
Εγγραφή: 12 Ιούλ 2010, 17:54
Τοποθεσία: Καλαμάτα
Launchpad: konnn
Εκτύπωση

Re: Αλγόριθμοι σε Ψευδοκώδικα ή Διάγραμμα Ροής.

Δημοσίευσηαπό NickKas » 28 Μάιος 2014, 17:57

δηλαδή εγω που στην 3η λυκείου έμαθα κάποια πράγματα για τον προγραμματισμό σε ψευδολογούσα,μου αρέσει αλλα ακόμα δεν ξέρω κάποια γλώσσα προγραμματισμού μπορώ να δοκιμάσω διάφορα πράγματα εδώ;οι γνώσεις μου αρκούνε;
και αν γράψω ψευδοκόδηκα πάνω σε τι θα είναι,ότι μου αρέσει;(εφόσον δεν υπάρχουν ασκήσεις του βιβλίου όπως στο λύκειο)
:D :D
NickKas
babeTUX
babeTUX
 
Δημοσιεύσεις: 5
Εγγραφή: 27 Μάιος 2014, 14:07
Εκτύπωση

Επόμενο

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι