Από ΓΛΩΣΣΑ ( Γ' Λυκείου ) σε BASH




   Στην Γ' Λυκείου στην τεχνολογική κατεύθυνση και στον κύκλο πληροφορικής και υπηρεσιών διδάσκεται το μάθημα Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον, ή αλλιώς Προγραμματισμός.

    Σε αυτό το μάθημα ο προγραμματισμός γίνεται πάνω σε μία γλώσσα του υπουργείου παιδείας η οποίο έχει το πολύ πρωτότυπο όνομα ΓΛΩΣΣΑ :)!
Οι εντολές αυτής της γλώσσας είναι στα ελληνικά και η σύνταξη των εντολών είναι απλή, χωρίς περίεργους συμβολισμούς, οι οποίοι υπάρχουν στις περισσότερες γλώσσες, μιας και σκοπός του μαθήματος είναι η μύηση στον αλγοριθμικό τρόπο σκέψης και όχι η γνώση μιας κανονικής γλώσσας προγραμματισμού. 



Για την ΓΛΩΣΣΑ υπάρχει και διερμηνευτής στον οποίο οι μαθητές μπορούν να φτιάχνουν τα προγράμματά τους και να τα μετατρέπουν σε εκτελέσιμα (.exe).
Ο διερμηνευτής είναι ελεύθερος για download (δείτε εδώ)
και τρέχει μία χαρά σε οποιαδήποτε διανομή Linux με την βοήθεια του wine, όπως επίσης και τα εκτελέσιμα προγράμματα που δημιουργεί.

Σε αυτό τον οδηγό θα προσπαθήσουμε να αντιστοιχήσουμε τις λειτουργίες της ΓΛΩΣΣΑΣ με τις λειτουργίες του κελύφους BASH, το οποίο είναι μια πληρέστατη γλώσσα προγραμματισμού, με πολύ περισσότερες δυνατότητες φυσικά από την ΓΛΩΣΣΑ. (θεωρούμε ως δεδομένο ότι γνωρίζεται ήδη την ΓΛΩΣΣΑ από το σχολείο, οπότε δεν αναλύουμε την ακριβή λειτουργία των εντολών).

Το BASH στην πραγματικότητα είναι ένα «κέλυφος» γραμμής εντολών, το οποίο είναι το κυρίαρχο στο Linux. Το όνομά του προκύπτει από τις λέξεις Bourne Again Shell (Bourne ήταν ο δημιουργός του κελύφους sh). Το ΒASH, όπως κάθε κέλυφος έχει δύο κύριες λειτουργίες: την εκτέλεση προγραμμάτων και την δημιουργία κι εκτέλεση σεναρίων.
Αν γράψουμε στην γραμμή εντολών του Linux (τερματικό) την λέξη «firefox», τότε θα ανοίξει η ομώνυμη εφαρμογή. Αυτό είναι η πρώτη κατηγορία.
Η δεύτερη κατηγορία τώρα (δημιουργία κι εκτέλεση σεναρίων) είναι η δυνατότητα να δημιουργείς εφαρμογές όπως ακριβώς κάναμε και στην ΓΛΩΣΣΑ.

Συγκριτικοί Τελεστές

ΓΛΩΣΣΑ
BASH
> (μεγαλύτερο)
-gt
< (μικρότερο)
-lt
= (ίσο)
-eq
>= (μεγαλύτερο και ίσο)
-ge
<= (μικρότερο και ίσο)
-le
<> (διάφορο)
-ne





Αριθμητικοί Τελεστές

ΓΛΩΣΣΑ
BASH
+ (πρόσθεση)
+
- (αφαίρεση)
-
* (πολλαπλασιασμός)
*
DIV (ακέραια διαίρεση)
/
^ (ύψωση σε δύναμη)
**
MOD (υπόλοιπο ακέραιας διαίρεσης)
%
/ (διαίρεση)
'X/Υ' |bc -l

Για την διαίρεση δίνεται το παράδειγμα:
Αν θέλουμε να εμφανίσουμε το αποτέλεσμα της διαίρεσης 13/2 δίνουμε
echo '13/2' |bc -l
και θα εμφανιστεί
6.50000000000000000000


Λογικοί τελεστές
ΓΛΩΣΣΑ
BASH
ΟΧΙ
!
Η
||
ΚΑΙ
&&

Το σχόλιο τέλος στην ΓΛΩΣΣΑ μπαίνει με το θαυμαστικό (!), ενώ στην BASH με την δίεση (#).


Ξεκινώντας την συγγραφή ενός προγράμματος
Στην ΓΛΩΣΣΑ για να ξεκινήσουμε την συγγραφή ενός προγράμματος ανοίγουμε τον κειμενογράφο της ΓΛΩΣΣΑΣ και γράφουμε
ΠΡΟΓΡΑΜΜΑ τάδε
και έπειτα ορίζουμε τις μεταβλητές
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: Χ, Υ
ΑΚΕΡΑΙΕΣ: Κ
ΛΟΓΙΚΕΣ: DONE
ΧΑΡΑΚΤΗΡΕΣ: ONOMA, EΠ


Στο BASH μπορείτε να διαλέξετε από μια πληθώρα κειμενογράφων, όπως το gedit, kwriter (με γραφικό περιβάλλον) ή το nano και το vim (από γραμμή εντολών).
Το μόνο που χρειάζεται να δώσετε για να ξεκινήσετε την δημιουργία ενός bash script είναι
#!/bin/bash
έτσι ώστε να δηλώσετε στον κειμενογράφο ότι ετοιμάζεστε να γράψετε ένα πρόγραμμα σε bash. Δεν χρειάζεται η δήλωση των μεταβλητών που έχουμε στην γλώσσα!



Δομές

Πάμε τώρα να δούμε πως δουλεύουν οι τρεις βασικές δομές στις δύο γλώσσες. Η δομή ακολουθίας, η δομή επιλογής και η δομή επανάληψης.

>Δομή ακολουθίας
Η ακολουθιακή δομή εντολών (σειριακών βημάτων) χρησιμοποιείται πρακτικά για την αντιμετώπιση απλών προβλημάτων, όπου είναι δεδομένη η σειρά εκτέλεσης ενός συνόλου ενεργειών.
Οι βασικές εντολές στην δομή ακολουθίας είναι η εντολή εισόδου και η εντολή εκχώρησης.

Στην ΓΛΩΣΣΑ για να διαβάσουμε κάτι από τον χρήστη του προγράμματος και να το αποθηκεύσουμε σε μια μεταβλητή (έστω Χ) δίνουμε
ΔΙΑΒΑΣΕ Χ
ενώ στην BASH
read X

Για να εκχωρήσουμε κάτι σε μια μεταβλητή στην ΓΛΩΣΣΑ δίνουμε
Χ <- 2+2
αν θέλουμε να γίνει η πράξη ενώ
Χ <- '2+2'
Αν δεν θέλουμε να γίνει η πράξη.

Στo BASH τώρα δίνουμε
Χ=2+2
αν δεν θέλουμε να γίνει η πράξη και
Χ=$[2+2]
αν θέλουμε να γίνει η πράξη!

Σημαντικό είναι πως όταν χρησιμοποιούμε μια μεταβλητή στο BASH πρέπει μπροστά να βάζουμε και το δολάριο ($).
Για παράδειγμα ενώ στην ΓΛΩΣΣΑ θα είχαμε
X<-0
Χ<-Χ+1

στο BASH έχουμε
X=0
X=$[$X + 1]


>Δομή επιλογής

H σύνταξη της δομής επιλογής έχει ελάχιστες διαφορές από την μία γλώσσα στην άλλη.
Στην ΓΛΩΣΣΑ συντάσσεστε ως εξής:
ΑΝ συνθήκη ΤΟΤΕ
εντολές
ΤΕΛΟΣ_ΑΝ

Στo BASH
if [ συνθήκη ]; then
εντολές
fi

Η σύνθετη μορφή επιλογής είναι και πάλι η ίδια.
Η εντολή
ΑΛΛΙΩΣ_ΑΝ
αντιστοιχίζεται με την
elif
και η
AΛΛΙΩΣ
με την
else
Παράδειγμα: (Να διαβάζει έναν αριθμό και να εμφανίζει αν είναι θετικός, αρνητικό ή μηδέν)
ΓΛΩΣΣΑ
ΔΙΑΒΑΣΕ Χ
ΑΝ Χ > 0 ΤΟΤΕ
ΓΡΑΨΕ 'ΘΕΤΙΚΟΣ'
ΑΛΛΙΩΣ_ΑΝ Χ < 0 ΤΟΤΕ
ΓΡΑΨΕ 'ΑΡΝΗΤΙΚΟΣ'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'ΜΗΔΕΝ'
ΤΕΛΟΣ_ΑΝ

BASH
read x
if [ $x -gt 0 ]; then
echo 'θετικος'
elif [ $x -lt 0 ]; then
echo 'αρνητικός'
else
echo 'μηδεν'
fi

> Δομή επανάληψης

Η δομή επανάληψης στην ΓΛΩΣΣΑ περιλαμβάνει τις εντολές: ΓΙΑ , ΟΣΟ και ΜΕΧΡΙΣ ΟΤΟΥ

>ΓΙΑ...ΑΠΟ...ΜΕΧΡΙ...ME BHMA

H εντολή αυτή στην ΓΛΩΣΣΑ συντάσσεστε ως εξής:
ΓΙΑ μεταβλητή ΑΠΟ τιμή1 ΜΕΧΡΙ τιμή2 ΜΕ ΒΗΜΑ τιμή3
εντολές
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Στο BASH

for μεταβλητή in {τιμή1..τιμή2..τιμή3}
do
εντολές
done

H τιμή1, τιμή2, τιμή3 της ΓΛΩΣΣΑΣ αντιστοιχούν με τις ομώνυμες τιμές στο BASH. Δηλαδή η τιμή3 είναι το βήμα!!

Παράδειγμα: (Να εμφανίζει τους αριθμούς 1,3,5,7,9)

ΓΛΩΣΣΑ

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10 ΜΕ ΒΗΜΑ 2
ΓΡΑΨΕ i
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

BASH

for i in {1..10..2}
do
echo $i
done


> ΟΣΟ...ΕΠΑΝΑΛΑΒΕ

Η εντολή αυτή στην ΓΛΩΣΣΑ συντάσσεστε ως εξής

ΟΣΟ συνθήκη ΕΠΑΝΑΛΑΒΕ
εντολές
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ


Στο BASH

while [ συνθήκη ]; do
εντολές
done


Παράδειγμα:

ΓΛΩΣΣΑ
χ <- 0
ΟΣΟ Χ < 10 ΕΠΑΝΑΛΑΒΕ
ΓΡΑΨΕ "ΤΟ Χ ΕΙΝΑΙ", Χ
Χ<-Χ+1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΒASH
x=0
while [ $x -lt 10 ]; do
echo to x einai $x
x=$[$x + 1]
done
echo $x


>ΑΡΧΗ_ΕΠΑΝΑΛΗΣ... ΜΕΧΡΙΣ_ΟΤΟΥ

Η εντολή αυτή στην ΓΛΩΣΣΑ συντάσσεστε ως εξής:

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
εντολές
ΜΕΧΡΙΣ_ΟΤΟΥ λογική-έκφραση

Στο BASH η εντολή αυτή συντάσσεται ανάποδα:

until [ λογική-έκφραση ]; do
εντολές
done





Παράδειγμα:
ΓΛΩΣΣΑ:
χ <- 0
ΟΣΟ Χ < 10 ΕΠΑΝΑΛΑΒΕ
ΓΡΑΨΕ "ΤΟ Χ ΕΙΝΑΙ", Χ
Χ<-Χ+1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

BASH

x=0
until [ $x -gt 10 ]; do
x=$[$x + 1]
echo $x times
done


Σχόλια

Δημοσίευση σχολίου

Δημοφιλείς αναρτήσεις από αυτό το ιστολόγιο

[σκέψεις & συναισθήματα] Όταν δεις τον κόσμο διαφορετικά... (offtopic)

Phet – εικονικά πειράματα ανοικτού κώδικα