<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
"http://www.w3.org/TR/html4/loose.dtd"">
<html>
<head>
<title>Εισαγωγή στο προγραμματισμό με την SB</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-7">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<style>
body {
margin: 4em;
margin-left: 4em;
font-family: sans-serif;
color: black;
background: white;
background-position: top left;
background-attachment: fixed;
background-repeat: no-repeat;
}
:link { color: #00C; }
:visited { color: #609; }
a:active { color: #C00; }
a:link img, a:visited img { border-style: none } /* no border on img links */
a img { color: white; } /* trick to hide the border in Netscape 4 */
@media all { /* hide the next rule from Netscape 4 */
a img { color: inherit; } /* undo the color change above */
}
caption, li, th, td { /* ns 4, ie 5 */
font-family: sans-serif;
}
h1, h2, h3, h4, h5, h6 { text-align: left; font-family: sans-serif; }
h1, h2, h3 { color: #005A9C; }
.hide { display: none }
div.head { margin-bottom: 1em }
div.head table { margin-left: 2em; margin-top: 2em }
p.copyright { font-size: small }
p.copyright small { font-size: small }
a[href]:hover { background: #ffa }
pre.example {
border-top: 1px solid #d0d0d0;
border-bottom: 1px solid #d0d0d0;
padding: 0.6em;
}
pre.result {
color: green;
font-weight: bold;
background-color: #f0f0f0;
border: 1px solid #c0c0c0;
padding: 1em;
}
dt, dd { margin-top: 0; margin-bottom: 0 } /* opera 3.50 */
dt { font-weight: bold }
pre, code { font-family: monospace } /* navigator 4 requires this */
li { margin: 0.75em; }
.note {
border-top: 1px solid #d0d0d0;
color: #808080;
}
.subtitle {
font-size: 1.1em;
font-weight: bold;
font-style: italic;
border-top: 1px solid black;
text-align: right;
}
.author {
text-align: right;
font-style: italic;
}
.example img {
border: 1px solid black;
}
dfn {
font-weight: bold;
}
code {
font-family: monospace;
font-weight: bold;
}
</style>
</head>
<body>
<h1>Εισαγωγή στο προγραμματισμό με την SB</h1>
<p class=subtitle>Ενα κείμενο για αρχάριους, Εκδοση 2, Αύγουστος 2003</p>
<p class=author>Νίκος Χριστόπουλος</p>
<h2>Εισαγωγή</h2>
<p>
<i>"What is computer programming? Nothing mysterious! Programming is simply communicating with a computer -
telling it what to do and when to do it. To program your computer you'll only learn two things: the
language your computer understands, and the way you talk to it. No lengthy training periods or super-sophisticated
skills are required."</i>
<p>
Μετάφραση: <i>"Τι είναι ο προγραμματισμός Η/Υ; Τίποτα το μυστήριο! Ο προγραμματισμός είναι, απλά, η επικοινωνία με
ένα υπολογιστή - λέγοντας του τι να κάνει και πότε να το κάνει. Για να προγραμματίσεις τον υπολογιστή σου θα
χρειαστεί να μάθεις μόνο δύο πράγματα: Την γλώσσα που ο υπολογιστής καταλαβαίνει και ο τρόπος που πρέπει να
του "μιλάς". Δεν χρειάζονται μακρές περίοδοι εκπαίδευσης ή ειδικές ικανότητες."
</i>
<p>
<b>"Texas Instruments TI-99/4A Computer. Beginner's BASIC"</b>
<br>Copyright (c) 1979, 1981 by Texas Instruments Incorporated
<p>
Απόσπασμα από το πρώτο βιβλίο για Η/Υ που διάβασα.
<h2>Η γραμμή εντολών του Unix</h2>
<p>
...
</p>
<h2>Το πρώτο μας πρόγραμμα</h2>
Είμαστε έτοιμοι να γράψουμε το πρώτο πρόγραμμα μας;
Πληκτρολόγήστε την εντολή sbasic και πατήστε το πλήκτρο [ENTER]
<pre class=result>
# sbasic
</pre>
<p>
Η <acronym title="SmallBASIC">SB</acronym> ξεκίνησε, και μας προτρέπει να
πληκτρολογήσουμε το πρόγραμμα μας.
</p>
<pre class=result>
SmallBASIC version 0.9.0, use -h for help
Press CTRL+D to run.
* READY *
</pre>
<p>Ήρθε η ώρα να γράψουμε τις πρώτες "διαταγές" μας προς το μηχάνημα.</p>
<p>
Πληκτρολογήστε:
<pre class=example>
PRINT "Hello world"
</pre>
<p>
<b>PRINT</b> σημαίνει τύπωσε, γράψε. Αυτή είναι η διαταγή μας προς τον Η/Υ.
</p>
<p>Δίπλα απο την διαταγή πληκτρολογούμε τις παραμέτρους, δηλαδή το τι να τυπώσει
(στο παράδειγμα μας <b>"Hello world"</b>).
</p>
<p>
Τώρα πατήστε το πλήκτρο [ENTER] και μετά τα πλήκτρα [Ctrl+D]
</p>
<pre class=result>
SmallBASIC version 0.9.0, use -h for help
Press CTRL+D to run.
* READY *
PRINT "Hello world"
Hello world
* DONE *
</pre>
<p>Ορίστε το αποτέλεσμα :)</p>
<p>Ο υπολογιστής μας, εκτέλεσε την διαταγή που δώσαμε, και μας ειδοποίησε ότι τελείωσε
την εργασία του τυπώνοντας την λέξη <b>* DONE *</b> (done = το έκανα, τελείωσα).
</p>
<p>
Είναι εύκολο τώρα πια να καταλάβουμε ότι τα προγράμματα είναι μια σειρά απο διαταγές προς τον υπολογιστή.
</p>
<p>
Η <acronym title="SmallBASIC">SB</acronym> προσφέρει μια μεγάλη ποικιλία απο διαταγές που
μπορείτε να πληκτρολογήσετε. Ο κατάλογος αυτός βρίσκεται στην
πρώτη σελίδα του <a href="http://smallbasic.sourceforge.net">site</a> μας με τον τίτλο
<b>"SmallBASIC Guide"</b>.
</p>
<h2>Η σύνταξη των διαταγών</h2>
<p>
Ο υπολογιστής είναι μηχανή, για να καταλάβει τι του ζητάμε πρέπει να το γράψουμε με συγκεκριμένη σύνταξη.
Είδαμε απο το παραπάνω παράδειγμα πως συντάσσουμε την εντολή <b>PRINT</b>.
</p>
<p><img src="syntax1.gif"></p>
<p>Τα διπλά εισαγωγικά δηλώνουν στην <b>SB</b> ότι αυτό που γράψαμε είναι κάποιο κείμενο.
Αυτό χρειάζεται γιατί όπως Θα δούμε παρακάτω, μπορούμε να δώσουμε παραμέτρους που δεν είναι απλά κείμενα.
</p>
<p>Τι γίνετε όμως όταν θέλουμε να δώσουμε πάνω απο μία παραμέτρους;</p>
<p><img src="syntax2.gif"></p>
<p>Ωραία μέχρι εδώ... Αλλά γιατί να χρειάζεται να δώσουμε πάνω απο μια παράμετρο;</p>
<p>Στο παράδειγμα μας, δεν έχει ακόμη νόημα. Και οι δύο διαταγές κάνουν το ίδιο πράγμα.</p>
<p>Τί γίνετε όμως όταν θέλουμε να τυπώσουμε το αποτέλεσμα μιας πράξης;</p>
<pre class=example>
PRINT "Το αποτέλεσμα της πρόσθεσης 1+2 είναι =", 1+2
</pre>
<p>
Η δεύτερη παράμετρος εδω, είναι μια πράξη.
Όταν ο υπολογιστής εκτελέσει αυτή την διαταγή θα τυπώσει στην οθόνη:
</p>
<pre class=result>
Το αποτέλεσμα της πρόσθεσης 1+2 είναι = 3
</pre>
<h2>Πράξεις στον υπολογιστή μας</h2>
<p><b>Πρόσθεση, αφαίρεση, πολλαπλασιασμός και διαίρεση</b></p>
<pre class=example>
PRINT 2+4, 4-2, 3*4, 10/5
</pre>
<p>
Οι πράξεις αυτές δεν έχουν μεγάλη διαφορά από όπως τις γράφεται με το χέρι. Αυτό όμως
που πρέπει να θυμάστε είναι ότι το σύμβολο του πολλαπλασιασμού είναι το αστεράκι (*)
</p>
<p>Στο παράδειγμα μας βάζουμε τον υπολογιστή να τυπώσει τα αποτελέσματα των πράξεων
2+4, 4-2, 3*4, 10/5. Οπότε λογικό είναι να περιμένουμε το παρακάτω αποτέλεσμα:
</p>
<pre class=result>
6 2 12 2
</pre>
<p>Προσέχτε ότι οι δεκαδικοί αριθμοί δηλώνονται με την τελεία (και όχι το κόμα) όπως στο Αγγλικό σύστημα.
π.χ. PRINT "π = ", 3.14
</p>
<h3>Προτεραιότητα πράξης</h3>
<p>
Η <b>SB</b> επιλύνει τις πράξεις με την σειρά που μάθαμε στο σχολείο: πρώτα ο πολλάπλασιασμός και η διαίρεση και μετά
η πρόσθεση και η αφαίρεση. Αυτό είναι αυτονόητο και σωστό, πως θα εκφράσουμε όμως πιο σύνθετες πράξεις;
</p>
<p>π.χ.</p>
<img src="div.gif">
<p>
Στο παραπάνω παράδειγμα πρέπει πρώτα να προσθέσουμε το 3+6 και μετά να διαιρέσουμε το αποτέλεσμα με το 3.
Δηλαδή η πράξη 3+6 έχει προτεραιότητα σε σχέση με την διαίρεση.
</p>
<p>
Για να δηλώσουμε την προτεραιότητα αυτή χρησιμοποιούμε τις παρενθέσεις: (3+6)/3.<br>
Παρομοίως δηλώνονται και πιο σύνθετες πράξεις:
</p>
<img src="div2.gif"> = ((3+3)*2)/3
<h3>Δυνάμεις</h3>
<p>
Οι δυνάμεις συμβολίζονται με το ^.<br>Το 4 στο τετράγωνο γράφετε 4^2, το 6 στον κύβο 6^3.<br>
Όταν θέλουμε να δηλώσουμε πολύ μεγάλους ή μικρούς αριθμούς μπορούμε να χρησιμοποιήσουμε την "επιστημονική" σύνταξη:
νEδ, ν = αριθμός, δ = εκθέτης του 10, π.χ. 1E11 = 1 * 10 ^ 11<br>
Το Ε δηλαδή εκφράζει το τμήμα "*10^".
</p>
<h2>Μεταβλητές</h2>
<p>Μεταβλητές είναι μνήμη την οποία την χρησιμοποιούμε για να αποθηκεύσουμε κάποιες τιμές.</p>
<p>π.χ.</p>
<pre class=example>
Α=5
PRINT A
</pre>
<p>Στην πρώτη γραμμή δίνουμε την τιμή 5 στην μεταβλητή με το όνομα Α.<br>
Στην δεύτερη γραμμή τυπώνουμε τα περιεχόμενα της μεταβλητής A. Προσέξτε οτι η παράμετρος του
PRINT είναι χωρίς διπλά εισαγωγικά γιατί αυτή τη στιγμή ζητάμε απο την BASIC να τυπώσει τα
περιεχόμενα της μεταβλητής Α.
</p>
<p>
Φανταστήτε την μνήμη του Η/Υ σας, σαν ένα τεράστιο έπιπλο απο συρτάρια.
Κάθε ένα απο τα συρτάρια είναι μια μεταβλητή.
Η εττικέτα έξω απο το συρτάρι είναι το όνομα της μεταβλητής,
ενώ μέσα στο συρτάρι αποθηκεύουμε την τιμή της μεταβλητής.
</p>
<p>
Δηλαδή στο παράδειγμα μας (Α=5), πήραμε ένα συρτάρι, γράψαμε απ' έξω,
στην εττικέτα του, το όνομα Α και βάλαμε μέσα τον αριθμό 5.
</p>
<p>Ας δούμε κάτι με πιό πολλές μεταβλητές</p>
<pre class=example>
A=5
B=8
A=3
PRINT A,B
</pre>
<p>Ας παρακολουθήσουμε τώρα τι θα συμβεί στην μνήμη...</p>
<img src="a-b.gif">
<p>Τέλος η διαταγή <b>PRINT</b> θα γράψει στην οθόνη τα περιεχόμενα των "συρταριών" Α και Β.
Δηλαδή το αποτέλεσμα που θα τυπωθεί στην οθόνη θα είναι 3 και 8</p>
<h2>Το δεύτερο πρόγραμμα και η διαταγή INPUT</h2>
<p><q>Ωραία όλα αυτά τα κουτάκια αλλά τι να τα κάνουμε;</q></p>
<p>Σύντομα θα δούμε την χρήση τους, πρώτα όμως ας μάθουμε την διαταγή <b>INPUT</b></p>
<p>Ας γράψουμε το παρακάτω πρόγραμμα:</p>
<pre class=example>
INPUT "Your name please ", A
PRINT "Hello", A
</pre>
<h3>Τι κάνει η διαταγή INPUT;</h3>
<p>Αυτή η διαταγή βάζει τον υπολογιστή μας να περιμένει από τον χρήστη (δηλαδή εμάς)
να πληκτρολογήσει μια τιμή. Την τιμή που θα γράψει ο χρήστης την αποθηκεύει
στην παράμετρο-μεταβλητή (στο παράδειγμά μας στην A).
</p>
<p>Ο υπολογιστής άρχισε να εκτελεί τις διαταγές που του δώσαμε, και τώρα βρίσκετε στην INPUT.</p>
<p>Περιμένει απο εμάς να γράψουμε το όνομα μας... Πληκτρολογήστε, λοιπόν, το όνομα σας</p>
<p>Ορίστε, το δικό μου...</p>
<p>Τώρα πρέπει να πούμε στην INPUT ότι "εν'τάξει το γράψαμε, πήγαινε παρακάτω επιτέλους...". Για να καταλάβει
η INPUT ότι τελειώσαμε πρέπει να πατήσουμε το πλήκτρο [ENTER].
</p>
<p>Μετά το [ENTER] που πατήσαμε, η εντολή INPUT έβαλε το όνομα σας στην μεταβλητή Α.</p>
<p>Οπότε βλέπουμε τώρα και τα αποτελέσματα της PRINT "Hello", A</p>
<p>Αυτό ήταν...</p>
<p>Ας έρθουμε τώρα σε ένα πιο σοβαρό πρόγραμμα, το οποίο να μετατρέπει τις μονάδες
θερμοκρασίας Φαρενάιτ στην κλίμακα Κελσίου.</p>
<p>Ξέρουμε, και αν δεν το ξέρετε το μαθαίνετε τώρα, ότι 5/9*(μονάδες Φαρενάιτ - 32) = βαθμοί Κελσίου.
Θα χρησιμοποιήσουμε το γράμμα C για να συμβολίσουμε τους βαθμούς Κελσίου και το F τους βαθμούς Φαρενάιτ.
</p>
<p>Πληκτρολογούμε το πρόγραμμα:</p>
<pre class=example>
REM Ορίζουμε στο πρόγραμμα μας ότι οι βαθμοί F
REM που θέλουμε να μετατρέψουμε είναι 87
F=87
REM Δηλώνουμε τον υπολογισμό του C
C=5/9*(F-32)
REM Και τυπώνουμε το αποτέλεσμα
PRINT "Οι"
PRINT F, "βαθμοί Φαρενάιτ είναι"
PRINT C, "βαθμοί Κελσίου"
</pre>
<p>
Η εντολή <code>REM</code> μας επιτρέπει να γράφουμε σημειώσεις μέσα στο πρόγραμμα.
Οι σημειώσεις αυτές δεν είναι διαταγές προς την SB αλλά σημειώσεις που κρατάμε μέσα στο
πρόγραμμα για δική μας ευκολία. Η SB θα τα αγνοήσει.
</p>
<p>Ορίστε το αποτέλεσμα :)</p>
<p>Πάμε πίσω τώρα στο κώδικα (<b>MENU</b> και μετά <b>Close</b>) για να χρησιμοποιήσουμε την
<code>INPUT</code>!</p>
<p>Αντικαταστήστε την διαταγή <code>F=87</code> με την <code>INPUT F</code>,
έτσι ώστε να μας ρωτάει, κάθε φορά που τρέχουμε το πρόγραμμα, την τιμή της μεταβλητής
F, δηλαδή την τιμή Φαρενάιτ που θέλουμε να μετατρέψουμε.</p>
<p>Το πρόγραμμα ξεκίνησε και περιμένει απο εμάς να πληκτρολογήσουμε την τιμή του F.</p>
<p>Την γράφουμε λοιπόν και πατάμε το πλήκτρο [ENTER].</p>
<p>Στο παράδειγμα εδώ, έδωσα την τιμή 60.</p>
<p>Ορίστε το αποτέλεσμα.</p>
</body>
</html>