Ποια η σχέση Αλγόριθμου και  προγράμματος;

Ο Αλγόριθμος είναι η στρατηγική που θα ακολουθηθεί για την επίλυση ενός προβλήματος. Εστιάζει στην ανθρώπινη κατανόηση. Αντίθετα, το πρόγραμμα είναι η υλοποίηση του αλγόριθμου σε κάποια γλώσσα προγραμματισμού (π.χ. Python, C, Java, C++).

Οι γλώσσες προγραμματισμού είναι ομάδες εντολών που καταλαβαίνει ο υπολογιστής και παρουσιάζουν αρκετές διαφορές μεταξύ τους. Γι’ αυτό  ένα πρόβλημα μπορεί να έχει ένα αλγόριθμο αλλά πολλά προγράμματα (ένα για κάθε γλώσσα προγραμματισμού).

Εύρεση μέσου όρου δύο αριθμών σε C

				
					#include <stdio.h>
int main(void){
float num1,num2,avg;
printf("Πληκτρολογήστε τον πρώτο αριθμό ");
scanf("%f",&num1);
printf("Πληκτρολογήστε τον δεύτερο αριθμό ");
scanf("%f",&num2);
avg=(num1+num2)/2;
printf("Ο μέσος όρος είναι: %4.2f", avg);
return 0;
}
				
			

Εύρεση μέσου όρου δύο αριθμών σε Python

				
					num1 = input('Πληκτρολογήστε τον πρώτο αριθμό: ')
num2 = input('Enter second number: ')
avg= (float(num1) + float(num2))/2
print('Ο μέσος όρος είναι:', avg)
				
			

Για κάθε πρόβλημα υπάρχουν πολλοί αλγόριθμοι και κάθε αλγόριθμος μπορεί να υλοποιηθεί με πολλά προγράμματα.

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

Στο βιβλίο γίνεται αναφορά σε μία τεχνική για την ανάπτυξη προγραμμάτων που είναι γνωστή ως ιεραρχική σχεδίαση και επίλυση ή αλλιώς διαδικασία σχεδίασης «από πάνω προς τα κάτω» (Top-Down Design). Πρόκειται για μια τεχνική που λίγο πολύ όλοι μας χρησιμοποιούμαι σε καθημερινή βάση αλλά δεν το συνειδητοποιούμε πάντα.

Σκοπός της ιεραρχικής σχεδίασης είναι η διάσπαση ενός προβλήματος σε μικρότερα (και άρα απλούστερα) υποπροβλήματα. Λύνοντας τα υποπροβλήματα και ενώνοντας τις λύσεις τους έχουμε την λύση του αρχικού προβλήματος. 

Δομημένος λέγεται ο προγραμματισμός που κάνει χρήση μόνο των δομών ακολουθίας , επιλογής και επανάληψης.  Υπάρχουν και άλλοι τρόποι προγραμματισμού με σημαντικότερο τον αντικειμενοστραφή που θα δούμε προς το τέλος τηε ύλης. Τα πλεονεκτήματα που αναφέρει το βιβλίο στην ενότητα 6.4.3 είναι του δομημένου προγραμματισμού σε σχέση με τον προγραμματισμό που κάνει χρήση της εντολής GOTO. Εδώ και πολλά χρόνια η χρήση της εντολής GO TO έχει εξαλειφθεί.

Παράδειγμα

Έστω ένα ηλεκτρονικό κατάστημα που πουλάει υπολογιστές. Οι πελάτες παραγγέλνουν τα εξαρτήματα που επιθυμούν και το κατάστημα αφού τα συναρμολογήσει , τα αποστέλλει στον πελάτη με εταιρία ταχυμεταφορών (courier).
Να αναπτύξετε πρόγραμμα που αφού διαβάσει την τιμή των εξαρτημάτων (χωρίς ΦΠΑ) , να υπολογίζει και να εμφανίζει:

  • το κόστος συναρμολόγησης του υπολογιστή (10% επί της τιμής),
  • το κόστος αποστολής (5% επί του κόστους εξαρτημάτων και συναρμολόγησης),
  • τον ΦΠΑ που αντιστοιχεί (24% επί κόστους εξαρτημάτων, συναρμολόγησης και αποστολής)
  • Την τελική τιμή

Λύση

Διασπάμε το αρχικό πρόβλημα σε υποπροβλήματα. Αν ένα υποπρόβλημα διασπάται σε μικρότερα τότε το διασπάμε και αυτό κοκ. Στο σχήμα που ακολουθεί φαίνεται η ιεραρχική σχεδίαση του προβλήματος.

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

				
					ΔΙΑΒΑΣΕ κόστος                    ! Εισαγωγή Δεδομένων
συν ← (10*κόστος)/100             ! Υπολογισμός Συναρμολόγησης
ΓΡΑΨΕ συν                         ! Εμφάνιση Κόστους Συναρμολόγησης
αποστολή ← (5*(κόστος+συν))/100   ! Υπολογισμός Κόστους Αποστολής
ΓΡΑΨΕ αποστολή                    ! Εμφάνιση Κόστους Αποστολής
φπα ← (24*(κόστος+συν+αποστολή))/100    ! Υπολογισμός ΦΠΑ
ΓΡΑΨΕ φπα                         ! Εμφάνιση ΦΠΑ
τελικό ← κόστος+συν+αποστολή+φπα  ! Υπολογισμός τελικού κόστους
ΓΡΑΨΕ τελικό                      ! Εμφάνιση τελικού κόστους
				
			

GOTO: Το μαύρο πρόβατο του προγραμματισμού

Πρόκειται για μία ιδιαίτερα δημοφιλής εντολή που την συνατούσαμε στις περισσότερες γλώσσες προγραμματισμού μέχρι και την δεκαετία του 80. Η σύνταξη της ήταν συνήθως goto n που σήμαινε οτι ο υπολογιστής θα πρέπει να πάει στην γραμμή n και να συνεχίσει από εκεί την εκτέλεση των εντολών.

Παρόλο που η goto μπορούσε να χρησιμοποιηθεί για να επιτευχθούν συγκεκριμένες λειτουργίες, όπως η εξόδος από βρόχους ή η διακοπή εκτέλεσης, η χρήση της συχνά καθιστούσε τα προγράμματα χαοτικά και γιαυτό σιγά σιγά καταργήθηκε! 

Η έκφραση “μάυρο πρόβατο” σημαίνει αυτό που δεν το θέλει κανείς. 

Πλεονεκτήματα του δομημένου προγραμματισμού

Τα πλεονεκτήματα του δομημένου προγραμματισμού σε σχέση με τον προγραμματισμού που κάνει χρήση της goto είναι:

  • Δημιουργία απλούστερων προγραμμάτων.
  • Άμεση μεταφορά των αλγορίθμων σε προγράμματα.
  • Διευκόλυνση ανάλυσης του προγράμματος σε τμήματα.
  • Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος.
  • Διευκόλυνση στην ανάγνωση και κατανόηση του προγράμματος από τρίτους.
  • Ευκολότερη διόρθωση και συντήρηση.

Ερωτήσεις ανάπτυξης απο Πανελλαδικές εξετάσεις

  1. Ποια είναι τα πλεονεκτήματα του δομημένου προγραμματισμού; (B2001-Θ1A1)

  2. Σε ποιες στοιχειώδεις λογικές δομές στηρίζεται ο δομημένος προγραμματισμός; (E2003-Θ1Α)

  3. Να αναφέρετε τέσσερα πλεονεκτήματα του δομημένου προγραμματισμού. (E2003-Θ1Α)

  4. Να αναφέρετε επιγραμματικά πέντε από τα πλεονεκτήματα του δομημένου προγραμματισμού. (Π2016-A2)